2016-07-31 2 views
0

меня следовать учебник в этой ссылке, чтобы иметь возможность разрешить разрешение запроса во время выполнения: https://developer.android.com/training/permissions/requesting.htmlпозволяют запрашивает разрешение на время выполнения не работает

и он не работает, я копирую тот же самый код, но с разным разрешением «ACCESS_FINE_LOCATION "

мой код следующим образом

в OnCreate метод деятельности

int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 
if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 


    if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
      Manifest.permission.ACCESS_FINE_LOCATION)) { 

     DialogUtils.showDialogMessage(this, getString(R.string.error), 
       getString(R.string.error_location_permission_not_granted), getString(R.string.ok), getString(R.string.cancel), new OnClickListener() { 
        @Override 
        public void onClick(View view) { 

        /*ContextCompat.requestPermissions(ItemDetailsActivity2.this, 
          new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
          MAP_PERMISSION_REQUEST_CODE);*/ 
        } 
       }, null); 

    } else { 

     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
       MAP_PERMISSION_REQUEST_CODE); 
    } 
} 

и это обратный звонок Метод

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 

    switch (requestCode) { 
     case MAP_PERMISSION_REQUEST_CODE: { 

      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       initalizeMap(); 
      } else { 

       DialogUtils.showDialogMessage(this, getString(R.string.error), getString(R.string.error_location_permission_not_granted), getString(R.string.ok), null); 
      } 
      return; 
     } 
    } 
} 

и это моя конфигурация сборки

compileSdkVersion 23 
buildToolsVersion '23.0.3' 
minSdkVersion 15 
targetSdkVersion 15 

может кто-нибудь пожалуйста, скажите мне, что происходит со мной?

EDIT

при изменении targetSdkVersion до 23 как в явном и Gradle файла и запустить мое приложение дает мне следующий экран, и когда я нажимаю позволяю, дайте мне черный экран в течение длительного времени, и ничего не делать

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

enter image description here

+0

Да, я бегу на устройстве с Android-версией 6.0.1 –

ответ

2

В будущем, пожалуйста, подробно объяснить, что «она не работает» средства.

В этом случае я собираюсь угадать, что «он не работает» означает «диалоговое окно для предоставления пользователю разрешения не появляется». Это потому, что ваш targetSdkVersion установлен в 15, а не 23 или выше. Имея targetSdkVersion из 15, вы говорите, что хотите иметь поддержку разрешения на использование, где пользователь должен согласиться со всеми разрешениями во время установки, в том числе с dangerousprotectionLevel.

+0

, так вы предлагаете мне изменить targetSdkVersion на 23 ?? –

+0

@AmiraElsayedIsmail: Я не знаю, почему у вас установлено значение 15. Если вы хотите, чтобы разрешения на выполнение выполнялись, вам нужно поднять его как минимум до 23. Однако могут быть другие изменения, которые необходимо внести в ваш код как только вы это сделаете. Вам нужно будет просмотреть JavaDocs для [VERSION_CODES' между 16 и 23] (https://developer.android.com/reference/android/os/Build.VERSION_CODES.html), чтобы узнать, что еще вам нужно изменить , – CommonsWare

+0

Проверьте мои изменения. –

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