Wenn mein Fragment aufgebläht ist, öffnet es eine dialog box
für die Berechtigung WRITE_EXTERNAL_STORAGE
, wie in Android 6.0 erforderlich. Ich habe jedes Tutorial verfolgt, aber keine meiner Aktionen wird ausgeführt, wenn die Berechtigung erteilt oder verweigert wird. Ich möchte, dass die App geschlossen wird und ein Toast angezeigt wird, wenn die Berechtigung verweigert wird. Dies bedeutet permission would be asked again
, wenn die App erneut geöffnet wird.Aktion funktioniert nicht bei Berechtigung verweigert
Fragment Start:
public class SecondFragment extends Fragment {
View myView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.second_layout, container, false);
configureImageButton();
((MainActivity) getActivity()).setActionBarTitle("App");
if (ContextCompat.checkSelfPermission(getActivity(),
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},
1);
}
}
onRequestPermissionsResult:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Snackbar.make(myView, "Permission Granted.", Snackbar.LENGTH_LONG).show();
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
Toast.makeText(getActivity(), "Reopen app and allow permission.", Toast.LENGTH_LONG).show();
getActivity().finish();
}
}
}
Die App gewährt/verweigert die Erlaubnis aber ignoriert den Toast oder Snackbar. Alle Vorschläge sind willkommen. Vielen Dank!
Das Problem ist mit den 'ActivityCompat.requestPermissions'. In Ihrem Fall wird 'onRequestPermissionsResult' in der Aktivität und nicht im Fragment aufgerufen. Wenn Sie die Funktion 'requestPermissions' des Fragments verwenden, ruft sie das' onRequestPermissionsResult' des Fragments auf. – aborocz
@aborocz Ihre Erklärung hat sehr viel Sinn gemacht, ich habe den Code stattdessen in meine Aktivität verschoben, weil das nicht innerhalb des Fragments funktionieren würde. Jetzt funktioniert es perfekt. Vielen Dank. –