當我的片段被充氣時,它會根據android 6.0+中的要求打開dialog box
獲取權限WRITE_EXTERNAL_STORAGE
。我已經關注了每個教程,但是當授予或拒絕權限時,我的任何操作都不會執行。 我想要關閉應用程序,並在拒絕權限時顯示敬酒,即應用程序重新打開時的permission would be asked again
。行動不起作用權限被拒絕
片段開始:
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();
}
}
}
該應用程序不准許/拒絕許可但忽略了烤麪包或小吃吧。 所有的建議表示讚賞。謝謝!
問題出在'ActivityCompat.requestPermissions'上。在你的情況下'onRequestPermissionsResult'將在Activity中被調用,而不是在Fragment中。當你使用片段的'requestPermissions'函數時,它會調用片段的'onRequestPermissionsResult'。 – aborocz
@aborocz你的解釋很有意義,謝謝,我將代碼移到了我的活動中,而不是從片段內部工作。現在它完美地工作。謝謝。 –