2017-06-18 2 views

Antwort

0

Wenn Sie fragen, die Erlaubnis in irgendeiner Weise, wie im Folgenden in dem Dialog, der offen sein würde, um die Erlaubnis zu bitten, gibt es ein Kontrollkästchen, das es durch Überprüfung OS würden Sie nicht für diese Erlaubnis fragt mehr:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     } else { 
      ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RC_WRITE_EXTERNAL_STORAGE); 
     } 
} 
1

Nein, tut mir leid. Sie müssen nachverfolgen, ob Sie den Benutzer nach Berechtigungen gefragt haben, und diese Informationen dann verwenden, um festzustellen, ob Sie in Zukunft Fragen stellen oder nicht.

+0

Irgendwelche Quellen? Damit kann ich diese Idee klar verwerfen und Workarounds starten. – arunwithasmile

+0

@arunwithasmile: "Irgendwelche Quellen?" - Ich kann Ihnen keine Dokumentation über etwas zeigen, das nicht existiert. – CommonsWare

+0

Ja, Sie haben Recht. Ich habe nur gehofft :) – arunwithasmile

1

Wenn das Programm nicht "verzweifelt" die Berechtigung benötigt, können Sie SharedPreferences verwenden und eine Variable namens firstTime mit dem booleschen Wert true speichern. Dann checken Sie die onCreate-Methode für diese Variable ein. Wenn es wahr ist, frage die Erlaubnis und setze den Wert auf false und speichere es. Wenn der Benutzer die Anwendung dann erneut ausführt, ist dies nicht die "FirstTime", sodass er nicht mit der Berechtigung dazu aufgefordert wird.

SharedPreferences pref = this.getSharedPreferences("PACKAGE.NAME",MODE_PRIVATE); 
Boolean firstTime = pref.getBoolean("firstTime",true); 
if(firstTime){ 
//Ask for permissions here 
pref.edit().putBoolean("firstTime",false).apply(); 
} 
+0

Ich hatte diese Idee, aber da der Benutzer OS informieren kann, indem er das Kontrollkästchen im Dialogfeld aktiviert, habe ich mich gefragt, ob es eine Option gibt, diesen Parameter programmgesteuert zu übergeben. – arunwithasmile