1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hm0603-EasyPermissionsActivity

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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

Здесь вы узнаете, как импортировать EasyPermissionsActivity в проект.

Использование Android Studio или другого проекта Gradle сборки

Если вы используете Gradle для сборки, просто добавьте следующую строку в раздел dependencies файла build.gradle:

dependencies {
    // Другие зависимости
    implementation 'com.ds.lhm:easypermissionsactivity:1.0.0'
}

Использование EasyPermissionsActivity

Если вам нужно всего лишь включить все необходимые динамические разрешения, то вам достаточно просто использовать 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Супер простая программа для динамического запроса разрешений на Android 6.0. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hm0603-EasyPermissionsActivity.git
git@api.gitlife.ru:oschina-mirror/hm0603-EasyPermissionsActivity.git
oschina-mirror
hm0603-EasyPermissionsActivity
hm0603-EasyPermissionsActivity
master