2017-02-02 1 views
1

in android 6 oder höher, wenn der Benutzer geöffnet App erstes Mal ihm eine Erlaubnis bitten gewähren, wenn er damit nicht, dann Ausfahrt Appandroid - in der Nähe App, wenn der Benutzer nicht WRITE_EXTERNAL_STORAGE Erlaubnis

einig must erforderliche Berechtigung für meine app gelesen und zu externen Speicher schreiben, wie dies zu erreichen,

ich habe versucht, diese

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

In 'onRequestPermissionsResult()' Methode können Sie Ihr Ergebnis überprüfen. Wenn die Erlaubnis nicht erteilt wird, dann beenden Sie Ihre Aktivität. – Piyush

+0

wie kann ich das genau machen? Ich ersuche um Erlaubnis für die Hauptaktivität, wenn Benutzer eingeben, können Sie mit einem Code antworten – dharmx

+0

Was eingeben? Von der weichen Tastatur? – Piyush

Antwort

0

Vorschlag von @G verwenden. Brisida - Lince

ich es gelöst und ich schreibe meine Antwort hier für andere Völker, wenn sie gleiche Sache benötigen,

all Code i in MainActivity schreiben:

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 
       } 
      } 
} 

und dies ist überschreiben Methode 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; 
     } 
    } 

dies jetzt mthod Nähe:

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

     else 
     { 
      finish(); 
     } 
    } 
2

Sie müssen die Ergebnisse lesen onRequestPermissionsResult() und wenn der Benutzer die Berechtigungen verweigert, rufen context.finish() o r context.finishAffinity(). So etwas wie ... Edit: einen Blick auf die Dokumentation zu lernen, wie die Berechtigungen zu handhaben: 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

danke, ich lese docs über android 6 genehmigung und es löste meine frage und ich benutzte ihre closeNow() damit – dharmx

+0

Bitte markieren sie die frage als beantwortet. –

Verwandte Themen