Разрешения для Android обычно добавляются через файл манифеста. Разрешение может быть добавлено для всего приложения. или это также может быть применено на уровне активности. Я привел пример того, как это можно сделать.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Это обеспечит предоставление разрешений на уровне приложения. при этом, если вы хотите сделать это на уровне активности, вы можете включить его в активности через код.
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
Это вызовет страницу настроек, с помощью которой вы сможете включить приложение. настройки, необходимые для приложения.
Описание
Settings.ACTION_APPLICATION_DETAILS_SETTINGS
Открывает страницу настроек сведений для приложения. Отсюда пользователь должен вручную назначить желаемое разрешение.
Intent.FLAG_ACTIVITY_NEW_TASK
Необязательно. Если установлено, то открывает экран настроек (активность) как новое действие. В противном случае он будет открыт в текущем действии.
Uri.fromParts("package", getPackageName(), null)
Подготавливает или создает URI, тогда как getPackageName () - возвращает имя пакета приложения.
intent.setData(uri)
Не забудьте установить это. В противном случае вы получите android .content.ActivityNotFoundException. Потому что вы задали намерение как Settings.ACTION_APPLICATION_DETAILS_SETTINGS и android ожидает, что какое-то имя будет искать.