Ich habe ein Fragment, in dem ich Recyclerview habe und Daten in diesem Recyclerview mithilfe des Recyclerview-Adapters einstelle.
Jetzt habe ich eine Schaltfläche im Listenelement des Adapters, auf die ich klicken muss, um die READ_EXTERNAL_STORAGE-Berechtigung in Android auf ein neues Berechtigungsmodell in Android zu überprüfen.
Ich habe eine neue Funktion im Fragment dieses Adapters erstellt, um zu überprüfen, ob eine Berechtigung erteilt wurde oder nicht, und um eine Berechtigung anzufordern, falls diese noch nicht erteilt wurde.
Ich habe MyFragment.this als Parameter im Adapter übergeben und die Methode des Fragments aufgerufen, indem ich auf die Schaltfläche im Adapter klicke.
Ich habe den folgenden Code verwendet, um requestPermission in Fragment aufzurufen.
if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
ConstantVariables.READ_EXTERNAL_STORAGE);
}
Ich habe die onRequestPermissionsResult
Methode in Fragment mit dem folgenden Code überschrieben :
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ConstantVariables.READ_EXTERNAL_STORAGE:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, proceed to the normal flow.
startImageUploading();
} else {}
Es wird jedoch nicht aufgerufen, stattdessen wird die onRequestPermissionsResult-Methode dieser Aktivität aufgerufen.
Ich habe dieselbe onRequestPermissionsResult-Methode auch in der übergeordneten Aktivität des Fragments definiert und sie wird aufgerufen.
Ich kann die onRequestPermissionsResult-Methode der Aktivität nicht entfernen, möchte jedoch die onRequestPermissionsResult-Methode des Fragments aufrufen, wenn ich eine Berechtigung vom Fragment anfordere. Wie kann ich das machen? Mache ich hier etwas falsch, bitte helfen Sie mir, wenn jemand hier eine Idee hat.