2017-02-02 5 views
1

в Android 6 или выше, когда пользователь открыто приложение первый раз попросить у него какого-то разрешения если он Dont позволит затем выйти приложениеандроида - закрыть приложение, если пользователь не предоставление разрешения WRITE_EXTERNAL_STORAGE

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

я попытался это

if (Build.VERSION.SDK_INT >= 23) { 
       if (ContextCompat.checkSelfPermission(LoginActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
         != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(LoginActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE) 
         != PackageManager.PERMISSION_GRANTED) { 
        ActivityCompat.requestPermissions(LoginActivity.this, 
          new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE}, 
          1); 
       } else { 
        //do something 
       } 
      } else { 
        //do something 
      } 
+0

В методе 'onRequestPermissionsResult()' вы можете проверить свой результат. Если разрешение не предоставлено, то завершите свою деятельность. – Piyush

+0

как я могу это сделать точно? Я запрашиваю разрешение на mainactivity, когда пользователь вводит, можете ли вы ответить с кодом – dharmx

+0

Что входит? С мягкой клавиатуры? – Piyush

ответ

0

используя предложение от @G. Brisida - Lince

я ее решил и я пишу мой ответ здесь для других людей, если им нужно то же самое,

всех этот код, который я пишу в MainActivity:

if(Build.VERSION.SDK_INT >= 23) 
      { 
       if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) 
                 != PackageManager.PERMISSION_GRANTED || 
        ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE) 
                 != PackageManager.PERMISSION_GRANTED) 
       { 
    ActivityCompat.requestPermissions(MainActivity.this, 
           new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE}, 
           1); 
    } 
       else 
       { 
        //do something 
       } 
      } 
} 

и это метод коррекции onRequestPermissionsResult:

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

     switch(requestCode) 
     { 
      case 1: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) 
       { 
        // i am creating folder in external storage here 
       File create_dir=new File(Environment.getExternalStorageDirectory()+"/uca/"); 

       Toast.makeText(this,"creating",Toast.LENGTH_LONG).show(); 
       create_dir.mkdirs(); 

       } 
       else 
       { 
        closeNow(); 
       } 
       break; 
     } 
    } 

это уже близко mthod:

private void closeNow() { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
     { 
      finishAffinity(); 
     } 

     else 
     { 
      finish(); 
     } 
    } 
2

Вы должны прочитать результаты onRequestPermissionsResult() и если пользователь отказался от разрешения, вызовите context.finish() о r context.finishAffinity(). Что-то вроде ... Редактировать: Посмотрите на документы, чтобы узнать, как обращаться с разрешения: Android 6 Permissions

@Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { 
     switch (requestCode) { 
      case MAIN_PERMISSIONS: 
       if (grantResults.length > 0) { 
        // Validate the permissions result 
        if (permissionsOk) { 
         // All good 
        } else { 
         // Close your app 
         closeNow(); 
        } 
       } 
       break; 
     } 
    } 

    private void closeNow() { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      finishAffinity(); 
     } else { 
      finish(); 
     } 
    } 
+0

спасибо, я прочитал документы по запросу android 6, и он решил мой вопрос, и я использовал ваш closeNow() с ним – dharmx

+0

Пожалуйста, отметьте вопрос как можно скорее. –