Android 对片段的权限

Android 对片段的权限,android,android-fragments,android-permissions,Android,Android Fragments,Android Permissions,我已经回顾了关于android许可的其他问题。但我仍然没有得到碎片的解决方案。为什么权限对话框不出现?此外,它不会显示任何错误日志。只是没有出现 我不想使用FragmentCompat,因为它需要导入android.app.Fragment 这是我的最低工资。 minSdkVersion 16 import android.support.v4.app.Fragment; public class ComplaintFragment extends Fragment implements

我已经回顾了关于android许可的其他问题。但我仍然没有得到碎片的解决方案。为什么权限对话框不出现?此外,它不会显示任何错误日志。只是没有出现

我不想使用FragmentCompat,因为它需要导入android.app.Fragment

这是我的最低工资。 minSdkVersion 16

 import android.support.v4.app.Fragment;


 public class ComplaintFragment extends Fragment implements View.OnClickListener {

    private void StartCamera(){
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        requestPermissions(new String[]{Manifest.permission.CAMERA}, PERMISSIONS_CAMERA);
     }
     else {OpenCamera();}
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(ActivityCompat.checkSelfPermission(getActivity(), permissions[0]) == PackageManager.PERMISSION_GRANTED) {

        switch (requestCode) {
            case PERMISSIONS_CAMERA:
                OpenCamera();
                break;
        }
     }
  }

}
也许你可以试试复印
到您的manifest

试试这个

1) 在你的舱单上给相机许可

<uses-permission android:name="android.permission.CAMERA" />
3) Handel片段类中onActivityResult()方法中请求权限的结果

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 0: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    //permission accepted.
                    openCamera()
                } else {
                    //permission denied.
                }
                return;
            }
        }
    }
在build.gradle(应用程序级)中放置此代码(targetSdkVersion 23)


我在
onRequestPermissionsResult
上重写了您的函数。请尝试:

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch (requestCode) {
            case PERMISSIONS_CAMERA:
                if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)
                    //Camera permission grant
                    OpenCamera();
                else
                    Log.e("error","Oop something wrong with permission");
            break;
     }

也检查一下。这可能有助于回答您的问题。

您是否在
AndroidManiFest.xml
文件中声明了此权限
Manifest.permission.CAMERA
?是的,我确实声明permission int变量
PERMISSIONS\u CAMERA
必须小于255且大于0,请检查此项。嘿。。一张小支票。转到你的应用程序设置并检查选中的照相机权限是否为你的照相机意图打开?请尝试一次,让我知道它是否工作或不调试你的代码,以查看条件是否为检查。许可证授予吗?
   defaultConfig {
    applicationId "com.example.sampleproject"
    minSdkVersion 9
    targetSdkVersion 23
   }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch (requestCode) {
            case PERMISSIONS_CAMERA:
                if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)
                    //Camera permission grant
                    OpenCamera();
                else
                    Log.e("error","Oop something wrong with permission");
            break;
     }