0

Итак, когда я вызываю метод requestContactPermission, диалог появляется нормально, но когда я нажимаю кнопку «Разрешить», фрагмент закрывается и активность заставляет заново воссоздать? В чем проблема ? доза журнала не показывает ничегоAndroid Marshmallow: активность воссоздается после разрешения

private void requestContactPermission() { 

     if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)) { 
      getLoaderManager().initLoader(0, null, this); 
     } else { 
      requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, 
        101); 
     } 

    } 
    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case 101: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        getLoaderManager().initLoader(0, null, this); 
       } 
       break; 
     } 
    } 

моя главная проблема, когда я проверить его в эмуляторе его работу хорошо, но когда я проверить его в режиме реального устройства, как Galaxy S7 край я имею эту проблему

+0

Запрашивать разрешение рано, я предпочитаю задавать его в 'Activity' вы испытываете этот фрагмент – Sanoop

+0

@Sanoop уже пробовал, тот же результат –

+0

Ok .. Является ли' Activity' вы просите разрешения в. . Основной или по умолчанию «Активность», если не запрашивать разрешения в «MainActivity» .. При этом вам нужно будет только проверить разрешение в 'onCreateView' фрагмента. Таким образом,' Activity' не будет повторно создаваться ... – Sanoop

ответ

0

Попробуй.

if (ContextCompat.checkSelfPermission(getActivity(), 
       Manifest.permission.READ_CONTACTS) 
       != PackageManager.PERMISSION_GRANTED) { 
      Log.d(TAG, "Requesting Runtime Permission Read contact"); 

      ActivityCompat.requestPermissions(getActivity(), 
        new String[]{Manifest.permission.READ_CONTACTS}, 
        101); 
     } else { 

     Log.d(TAG, "Previously User have provided Read contact access"); 

     } 


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

     switch (requestCode) { 

      case 101: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        Log.d(TAG, "Write External Storage Access granted"); 

        downloadCurrentImage(); 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 

       } else { 


        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
       } 
      } 

      // other 'case' lines to check for other 
      // permissions this app might request 
     } 
    } 
+0

Я уже пробовал, я получил тот же результат –

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