2017-04-26 2 views
6

Ich schreibe Code um mehrere Run time permission on android 6.0 in Gruppe zu fragen. Alles in Ordnung, ich folge einem guten Beispiel dafür, habe aber immer noch Probleme.Erlaube mehrere Laufzeit Erlaubnis

In ActivityCompat.shouldShowRequestPermissionRationale (context, READ_PHONE_STATE) seine geben Fehler auf Zusammenhang, dass falsch erstes Argument Kontext. bitte helfen Sie, wie man es löst.

Vielen Dank im Voraus

-Code ist:

if (ContextCompat 
        .checkSelfPermission(SpalshActivity.this, 
          READ_PHONE_STATE)+ContextCompat.checkSelfPermission(context, 
        WRITE_EXTERNAL_STORAGE) +ContextCompat.checkSelfPermission(context, 
        CAMERA) + ContextCompat 
        .checkSelfPermission(context, 
          READ_CONTACTS)+ContextCompat 
        .checkSelfPermission(context, 
          CALL_PHONE)+ContextCompat 
        .checkSelfPermission(context, 
          ACCESS_FINE_LOCATION)+ContextCompat 
        .checkSelfPermission(context, 
          READ_SMS)== PackageManager.PERMISSION_GRANTED) { 
       myMethod(); 

      } 
       else { 
       if (ActivityCompat.shouldShowRequestPermissionRationale 
         (context, READ_PHONE_STATE) ||ActivityCompat.shouldShowRequestPermissionRationale 
         (context, WRITE_EXTERNAL_STORAGE)|| 
         ActivityCompat.shouldShowRequestPermissionRationale 
           (context, CAMERA) || 
         ActivityCompat.shouldShowRequestPermissionRationale 
           (context, READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale 
         (context, CALL_PHONE) || ActivityCompat.shouldShowRequestPermissionRationale 
         (context, ACCESS_FINE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale 
         (context, READ_SMS)) { 
        Snackbar.make(findViewById(android.R.id.content), 
          "Please Grant Permissions", 
          Snackbar.LENGTH_INDEFINITE).setAction("ENABLE", 
          new View.OnClickListener() { 
           @Override 
           public void onClick(View v) { 
            ActivityCompat.requestPermissions(SpalshActivity.this, 
              new String[]{READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE,CAMERA, READ_CONTACTS, CALL_PHONE, ACCESS_FINE_LOCATION, READ_SMS}, 
              REQUEST_READ_PHONE_STATE); 
           } 
          }).show(); 
       } else { 
        ActivityCompat.requestPermissions(SpalshActivity.this, 
          new String[]{READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE,CAMERA, READ_CONTACTS, CALL_PHONE, ACCESS_FINE_LOCATION, READ_SMS}, 
          REQUEST_READ_PHONE_STATE); 
       } 
      } 
      } 

    } 
+1

Versuchen Sie yourActivity.this, anstatt Kontext. –

Antwort

6

erste Parameter ist android.app.Activity Typ, Sie nicht context an dieser Stelle so verwenden this statt context wie Code unten passieren kann: -

if (ActivityCompat.shouldShowRequestPermissionRationale 
         (this, READ_PHONE_STATE) ||ActivityCompat.shouldShowRequestPermissionRationale 
         (this, WRITE_EXTERNAL_STORAGE)|| 
         ActivityCompat.shouldShowRequestPermissionRationale 
           (this, CAMERA) || 
         ActivityCompat.shouldShowRequestPermissionRationale 
           (this, READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale 
         (this, CALL_PHONE) || ActivityCompat.shouldShowRequestPermissionRationale 
         (this, ACCESS_FINE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale 
         (this, READ_SMS)) 
0

Versuchen Sie,zu ersetzen 10 mit this

if (ActivityCompat.shouldShowRequestPermissionRationale(this, READ_PHONE_STATE) || 
    ActivityCompat.shouldShowRequestPermissionRationale(this, WRITE_EXTERNAL_STORAGE) || 
    ActivityCompat.shouldShowRequestPermissionRationale(this, CAMERA) || 
    ActivityCompat.shouldShowRequestPermissionRationale(this, READ_CONTACTS) || 
    ActivityCompat.shouldShowRequestPermissionRationale(this, CALL_PHONE) || 
    ActivityCompat.shouldShowRequestPermissionRationale(this, ACCESS_FINE_LOCATION) || 
    ActivityCompat.shouldShowRequestPermissionRationale(this, READ_SMS)) { 
    //... 
} 
Verwandte Themen