2016-07-08 3 views
0

В настоящее время я работаю с разрешениями в Android Studio.Любой способ упростить проверку разрешений?

Я проверил, как это делает учебник, и я видел, что это действительно неприятно и долго. Текущий код таков:

String[] InternetPermission = new String[]{Manifest.permission.INTERNET}; 
    if (ContextCompat.checkSelfPermission(ViewingWindow.this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(ViewingWindow.this, 
       Manifest.permission.INTERNET)) { 
      InternetExplanation(); 
     } else { 
      ActivityCompat.requestPermissions(ViewingWindow.this, 
        new String[]{Manifest.permission.INTERNET}, 
        MY_PERMISSIONS_REQUEST_INTERNET); 
     } 

    } 

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_INTERNET: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] != PackageManager.PERMISSION_GRANTED){ 
       this.finishAffinity(); 
      } 
     } 
    } 
} 

Это, очевидно, довольно долго для проверки единого разрешения, на мой взгляд. Я всегда задавался вопросом, почему проверка всего разрешения не простая проверка операторов.

Есть ли причина для того, чтобы проверки на разрешение были такими длинными? Если нет, есть ли способ попытаться его оптимизировать?

Edit: Я заметил, что у меня есть downvotes. Я не совсем уверен, почему вы отказались от этого, потому что вы тоже не оставили комментарий ... если вы можете прокомментировать, почему этот вопрос недействителен, объясните, пожалуйста.

+0

Вы должны направить это: https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en –

ответ

2

В API 23 Или Android 6.0 мы должны отпросился у пользователя, и вы лучше знаете, это уже.

Если пользователю нужно одного разрешения, то вы должны требовать от пользователя для так

  1. Сначала вы проверяете приложение погоды уже есть разрешение, так ContextCompat.checkSelfPermission(ViewingWindow.this, Manifest.permission.INTERNET) эта линия подошла.
  2. Если приложение не имеет, то мы запрашиваем так ActivityCompat.requestPermissions(ViewingWindow.this, new String[]{Manifest.permission.INTERNET}, MY_PERMISSIONS_REQUEST_INTERNET);, эта линия подошла.
  3. наконец, наконец, у вас есть обратный вызов для проверки пользователя погоды предоставившего/Отклонено разрешения мы восприимчивые мы создаем следующий поведение так public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_INTERNET: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED){ this.finishAffinity(); } } }

Таким образом, вы не должны писать все коды для одного разрешения каждый раз, так что вы просто написать его один раз и использовать OOPS мощность/особенности.

+0

Урх, это отстой. Хорошо, тогда я просто пройду через это. Спасибо, что ответили! – Mildwood

0

Отъезд Github repo.

https://github.com/anshulagarwal06/Simplify-Permissions

Его простой в использовании и поддерживает все диалоговые проверки.

Характеристика

InBuild Rational Диалог с настраиваемым сообщением InBuild SettingScreen Диалога с пользовательским сообщением. Обратный звонок для разрешения: Получено разрешение Разрешение удалено Доступ разрешен.

Смежные вопросы