EasyPermissionsActivity
Суперпростой Android 6.0 динамический запрос разрешений.
GitHub: https://github.com/lhm0603/EasyPermissionsActivity
Gitee: https://gitee.com/hmOS/EasyPermissionsActivity
EasyPermissionsActivity поддерживает Android 4.0 и более поздние версии, но только на Android 6.0 API динамических разрешений работает.
Здесь вы узнаете, как импортировать EasyPermissionsActivity в проект.
Если вы используете Gradle для сборки, просто добавьте следующую строку в раздел dependencies
файла build.gradle
:
dependencies {
// Другие зависимости
implementation 'com.ds.lhm:easypermissionsactivity:1.0.0'
}
Если вам нужно всего лишь включить все необходимые динамические разрешения, то вам достаточно просто использовать EasyPermissionsActivity.
В файле AndroidManifest.xml добавьте разрешения, которые нужны вашему приложению:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.lin.example.epa"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGЕ"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<application>
</application>
</manifest>
В Activity, где вам нужны динамические разрешения, сделайте так, чтобы эта Activity наследовала от EasyPermissionsActivity (наследуется от AppCompatActivity), а затем в нужный момент (например, в методе onCreate()) вызовите super.requestPermissions();
EasyPermissionsActivity автоматически запросит все необходимые динамические разрешения!
public class MainActivity extends EasyPermissionsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Начать запрос разрешений
super.requestPermissions();
}
}
Вы, конечно, заинтересованы в том, чтобы узнать, успешно ли был запрошен доступ к разрешениям или нет. Это просто: вы можете переопределить следующие методы в классе, производном от EasyPermissionsActivity:
@Override
protected void onRequestPermissionsBefore() {
// Запрос разрешений перед этим методом
}
/**
* После запроса разрешений
*
* @param success true — успех / false — неудача
*/
@Override
protected void onRequestPermissionsAfter(boolean success) {
if (success) {
setContentView(R.layout.activity_main);
// Сделать что-то...
} else {
Toast.makeText(this, "Ещё есть разрешения, которые не были запрошены!", Toast.LENGTH_SHORT).show();
// Сделать что-то...
}
}
Обратите внимание:
Если приложение ранее запрашивало и получало разрешение READ_EXTERNAL_STORAGE, а затем оно запрашивает WRITE_EXTERNAL_STORAGE (оба принадлежат группе STORAGE), система немедленно предоставит это разрешение без повторного запроса. Конечно, вам не нужно беспокоиться об этом, EasyPermissionsActivity уже всё сделал за вас.
Если вы не уверены, какие разрешения принадлежат какой группе, вы можете проверить исходный код EasyPermissionsActivity, где перечислены все группы разрешений. Вы также можете обратиться к google API.
Перед использованием super.requestPermissions();
используйте метод super.addPermissionGroupDescription(@PermissionGroup String permissionGroup, String description)
для добавления описания использования разрешений.
// Добавить описание использования разрешений
super.addPermissionGroupDescription(EasyPermissionActivity.STORAGE, "Скачать книги, сэкономить трафик.");
super.addPermissionGroupDescription(EasyPermissionActivity.LOCATION, "Получить информацию о местоположении, интеллектуальные рекомендации.");
super.addPermissionGroupDescription(EasyPermissionActivity.PHONE, "Проверить IMEI, обеспечить безопасность аккаунта, предотвратить кражу аккаунта.");
// Начать запрос разрешений
super.requestPermissions();
Если у вас есть лучшее название подсказки разрешения, вы можете вызвать метод updatePermissionGroupName(@PermissionGroup String permissionGroup, String name)
перед использованием super.requestPermissions()
для изменения названия.
// Изменить название подсказки разрешения
super.updatePermissionGroupName(EasyPermissionActivity.STORAGE, "Хранилище файлов");
super.updatePermissionGroupName(EasyPermissionActivity.LOCATION, "Информация о местоположении");
// Начать запрос разрешений
super.requestPermissions();
Если вашему приложению требуется получить все разрешения перед запуском, вы можете использовать метод isRequestAgain(true)
перед super.requestPermissions()
, чтобы включить бесконечный режим (без кнопки отмены, только после предоставления всех разрешений будет вызван onRequiresPermissionsAfter
).
// Включить бесконечный запрос разрешений
isRequestAgain(true);
// Начать запрос разрешений
super.requestPermissions();
public class MainActivity extends EasyPermissionsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
... **// Добавление описания использования разрешений на хранение**
super.addPermissionGroupDescription(EasyPermissionActivity.STORAGE, "Загрузка книг, экономия трафика.");
super.addPermissionGroupDescription(EasyPermissionActivity.LOCATION, "Получение информации о местоположении, интеллектуальные рекомендации.");
super.addPermissionGroupDescription(EasyPermissionActivity.PHONE, "Проверка IMEI-кода, обеспечение безопасности аккаунта, предотвращение кражи аккаунта.");
super.updatePermissionGroupName(EasyPermissionActivity.STORAGE, «Файловое хранилище»);
super.updatePermissionGroupName(EasyPermissionActivity.LOCATION, «Информация о местоположении»);
**// Включение режима бесконечного запроса разрешений**
isRequestAgain(true);
**// Запрос разрешений**
super.requestPermissions();
}
@Override
protected void onRequestPermissionsBefore() {
// Данный метод вызывается перед запросом разрешений.
}
/**
* После запроса разрешений
*
* @param success true — успешно / false — неудачно
*/
@Override
protected void onRequestPermissionsAfter(boolean success) {
if (success) {
setContentView(R.layout.activity_main);
// Выполнить какие-либо действия...
} else {
Toast.makeText(this, «Не все разрешения были запрошены!», Toast.LENGTH_SHORT).show();
finish();
}
}
Copyright 2018 Huaming Lin.
Licensed under the Apache License, Version 2.0 (the «License»); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an «AS IS» BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )