android - 操作不适用于权限被拒绝

标签 android android-fragments android-permissions

当我的 fragment 膨胀时,它会根据 android 6.0+ 的要求打开一个对话框以获得 WRITE_EXTERNAL_STORAGE 权限。我已经按照每个教程进行操作,但是在授予或拒绝许可时我的任何操作都不会执行。 我希望应用程序关闭并在权限被拒绝时显示 toast ,这意味着当应用程序重新打开时将再次请求权限

fragment 开始:

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();
            }
    }
}

应用会授予/拒绝权限,但会忽略 toast 或 snackbar。 所有建议表示赞赏。谢谢!

最佳答案

fragment 内部有一些变化 请像下面这样尝试

 private void checkLocationPermission() {
    if (ContextCompat.checkSelfPermission(this.mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {


            //Prompt the user once explanation has been shown
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_CODE);


        } else {
            // No explanation needed, we can request the permission.
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_CODE);
        }
    }
}

在你的情况下 MY_PERMISSIONS_REQUEST_CODE = 1

关于android - 操作不适用于权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44493346/

相关文章:

java - Android MPAndroidChart LineChart如何完全忽略ViewPager触摸手势?

android - 我在 android studio 中实现菜单抽屉时出错

android - Android 中的 Instagram 集成

android - MediaPlayer,只有视频 m3u8 HTML 流工作

android - 在android中,即使启动服务的应用程序被手动杀死,服务是否可以在后台运行

Android如何获取路由器名称?

android - 无法在Android Fragment中加载简单的ListView

android - 是否可以使应用程序适应接受的权限?

android - 如何允许应用程序访问设备的位置

java - 使用 admob 的 Android 权限 - 有必要吗?