2016-08-18 3 views
0

Ich habe an einer Android App gearbeitet. Es zeichnet auf und schreibt in den lokalen Speicherbereich. Hier sind die Berechtigungen:Warum sind meine Berechtigungen auf einer Android-App, die ich gerade schreibe, plötzlich verschwunden?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

Und in der Mitte des Debuggen verlor ich die Berechtigungen auf dem Tablet selbst. Ich musste zu Einstellungen -> Anwendungen -> (meine App) -> App Permissions gehen und sie selbst einschalten. Bei Mikrofon und Speicher waren die Schieberegler deaktiviert.

Während ich jetzt laufe, würde ich gerne wissen, wie das passiert ist, damit ich verhindern kann, dass es wieder passiert.

Irgendwelche Hinweise, wo ich aussehen sollte?

Danke,

+0

Welche Android-Version verwenden Sie? – kggoh

+0

Wenn Sie in Android-Version 6.0 sind, müssen Sie während der Laufzeit eine Berechtigung anfordern. Hinzugefügt [link] http://stackoverflow.com/questions/38626882/storage-permission-issue-for-my-wallpaper-app-in-android-marshmallow/38626960#38626960 – kggoh

+0

Wenn Ihr Gerät Android 6.0 läuft, benötigen Sie eine Anfrage für einige spezielle Erlaubnis, wie in https://developer.android.com/training/permissions/requesting.html – anhtuannd

Antwort

0

Auf Android 6+, sind einige Berechtigungen wie Lagerung nicht ohne explizite Anforderung zur Laufzeit gewährt.

Wenn Sie die App deinstallieren und erneut installieren oder die App-Daten einfach löschen, werden die Berechtigungen widerrufen. Das könnte deine Situation erklären.

+0

erwähnt Gibt es etwas, was ich tun kann, dass dies vermeiden? Nach dem ersten Mal wurden die Berechtigungen über meine App hinzugefügt (die AndroidManifest-Datei). Gibt es eine andere Art, wie ich die Apps gewähren sollte, um dies in Zukunft zu vermeiden? –

+0

Nein, Sie müssen die Berechtigungen in Ihr Manifest schreiben UND bei Bedarf zur Laufzeit anfordern, wie in der Laufzeitdemo-Post angezeigt. – CAA

1

Laufzeitberechtigungen demo.

public class MyDevIDS extends AppCompatActivity { 

     private static final int REQUEST_RUNTIME_PERMISSION = 123; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      if (CheckPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
       // you have permission go ahead 
       createApplicationFolder(); 
      } else { 
       // you do not have permission go request runtime permissions 
       RequestPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION); 
      } 
     } 

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

      switch (permsRequestCode) { 

       case REQUEST_RUNTIME_PERMISSION: { 
        if (grantResults.length > 0 
          && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
         // you have permission go ahead 
         createApplicationFolder(); 
        } else { 
         // you do not have permission show toast. 
        } 
        return; 
       } 
      } 
     } 

     public void RequestPermission(Activity thisActivity, String Permission, int Code) { 
      if (ContextCompat.checkSelfPermission(thisActivity, 
        Permission) 
        != PackageManager.PERMISSION_GRANTED) { 
       if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
         Permission)) { 
       } else { 
        ActivityCompat.requestPermissions(thisActivity, 
          new String[]{Permission}, 
          Code); 
       } 
      } 
     } 

     public boolean CheckPermission(Context context, String Permission) { 
      if (ContextCompat.checkSelfPermission(context, 
        Permission) == PackageManager.PERMISSION_GRANTED) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } 
Verwandte Themen