import android.preference.PreferenceFragment;
import android.support.v13.app.FragmentCompat;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
public class Preferences extends PreferenceFragment implements OnPreferenceClickListener, FragmentCompat.OnRequestPermissionsResultCallback {
if (ContextCompat.checkSelfPermission(activity, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity,
new String[]{ android.Manifest.permission.WRITE_EXTERNAL_STORAGE },
Constant.WRITE_STORAGE_PERMISSION);
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grants) { }
Ich versuche, die neuen Berechtigungen zu erhalten. Der Dialog zeigt an, dass die Berechtigung angefordert wird, wenn dies der Fall ist, aber onRequestPermissionResult wird nie aufgerufen, sei es Ablehnung oder Annahme.OnRequestPermissionsResultCallback triggert nicht in PreferenceFragment
Irgendeine Idee? Die Beispiele verwenden alle Aktivität und kein Fragment, das könnte also das Problem sein. Ich bin mir auch nicht sicher, welches Compat ich verwenden soll (v4 vs. v13). Min SDK ist 14.
gleiches Ergebnis. Wie ist das anders? Das Problem ist 'public void onRequestPermissionsResult (int requestCode, @NonNull String [] Berechtigungen, @NonNull int [] grantResults) {}' wird nie aufgerufen. – xBlue
Was sind 'activity.setPermissionResultListener()' und 'permissionResultListener.onPermissionResult'? – xBlue
@xBlue, public void onRequestPermissionsResult (int requestCode, String [] Berechtigungen, int [] grantResults) {}, diese Methode wurde nur in Aktivität aufgerufen, nicht in Fragment, daher müssen Sie diese Methode in Aktivität implementieren, um eine Verbindung zwischen Aktivität und Fragment, müssen Sie die Schnittstelle PermissionResultListener erstellen. in Ihrer Aktivität bedeuten, müssen Sie Variable permissionResultListener deklarieren und Methode public void setPermissionResultListener (PermissionResultListener permissionResultListener) –