Android 我的应用反复请求权限,尽管用户已授予权限

Android 我的应用反复请求权限,尽管用户已授予权限,android,permissions,Android,Permissions,每次我点击相机按钮,应用程序都会请求权限,尽管它是被授予的;我仔细检查了设置,是的,我的应用程序有使用存储的权限。然而,这个问题只有在爸爸的手机上测试应用时才会出现,所以我的手机上不会出现 清单: <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-permission android:name="android.p

每次我点击相机按钮,应用程序都会请求权限,尽管它是被授予的;我仔细检查了设置,是的,我的应用程序有使用存储的权限。然而,这个问题只有在爸爸的手机上测试应用时才会出现,所以我的手机上不会出现

清单:

<uses-feature
        android:name="android.hardware.camera"
        android:required="false" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE"/>
//                           _______<<onRequestPermissionsResult()>>_______
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { //ToDo - Dad
        if (requestCode == REQUEST_WRITE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            lunchCamera();
        }
    }

    //---------------------------------        Request Permission         --------------------------
    public  void requestPermission() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION);
        } else {
            lunchCamera();
        }
    }
//check if there's a hardware on the device, then lunch the camera app on click
        if (hasCamera()) {
            //---
            snapFab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    requestPermission();
                }
            });
            //---

        } else {
            snapFab.setEnabled(false);

            Toast.makeText(this, "You don't have a hardware to handle camera events", Toast.LENGTH_LONG).show();
        }
//does the phone have a hardware to handle camera events
    public boolean hasCamera() {
        return getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
    }
hasCamera()方法:

<uses-feature
        android:name="android.hardware.camera"
        android:required="false" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE"/>
//                           _______<<onRequestPermissionsResult()>>_______
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { //ToDo - Dad
        if (requestCode == REQUEST_WRITE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            lunchCamera();
        }
    }

    //---------------------------------        Request Permission         --------------------------
    public  void requestPermission() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION);
        } else {
            lunchCamera();
        }
    }
//check if there's a hardware on the device, then lunch the camera app on click
        if (hasCamera()) {
            //---
            snapFab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    requestPermission();
                }
            });
            //---

        } else {
            snapFab.setEnabled(false);

            Toast.makeText(this, "You don't have a hardware to handle camera events", Toast.LENGTH_LONG).show();
        }
//does the phone have a hardware to handle camera events
    public boolean hasCamera() {
        return getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
    }

它每次都要求什么许可?您是否有使用该相机的权限,因为上面的代码中没有包含该相机…您必须检查您是否有权限。请参阅官方指南“每次都需要什么权限?”存储。“您是否有使用摄像头的权限”否,该应用程序使用设备的默认摄像头应用程序。在我的手机上,一切都正常运行,但当我在另一部手机上测试时,就会发生这种情况。您从哪里调用requestPermission(),以及您的午餐照相机()方法中有什么?您是否有可能创建一个仅在特定情况下触发的条件循环?最后,这两台设备是在尝试启动使用摄像头的相同应用程序,还是有不同的默认应用程序?可能循环是从另一个尝试启动并执行失败检查的应用程序创建的。我正在从MainActivity调用requestPermission(),该方法在用户每次单击相机按钮时都会运行,但如果授予了权限,则不应请求。不,两个设备都有不同的摄像头应用程序;出现问题的那个,就是使用谷歌摄像头的那个。您可以在此处查看午餐照相机():它每次都要求什么权限?您是否有使用该相机的权限,因为上面的代码中没有包含该相机…您必须检查您是否有权限。请参阅官方指南“每次都需要什么权限?”存储。“您是否有使用摄像头的权限”否,该应用程序使用设备的默认摄像头应用程序。在我的手机上,一切都正常运行,但当我在另一部手机上测试时,就会发生这种情况。您从哪里调用requestPermission(),以及您的午餐照相机()方法中有什么?您是否有可能创建一个仅在特定情况下触发的条件循环?最后,这两台设备是在尝试启动使用摄像头的相同应用程序,还是有不同的默认应用程序?可能循环是从另一个尝试启动并执行失败检查的应用程序创建的。我正在从MainActivity调用requestPermission(),该方法在用户每次单击相机按钮时都会运行,但如果授予了权限,则不应请求。不,两个设备都有不同的摄像头应用程序;出现问题的那个,就是使用谷歌摄像头的那个。您可以在此处检查照相机()