我查看了有关 Android 权限的其他问题。但我仍然没有得到fragment的解决方案。为什么没有出现权限对话框?此外,它不显示任何错误日志。它只是没有出现。
我不想使用 FragmentCompat,因为它需要导入 android.app.Fragment
这是我的最低 sdk 版本。 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;
}
}
}
}
最佳答案
试试这个,
1) 在 list 中授予相机权限。
<uses-permission android:name="android.permission.CAMERA" />
2) 检查权限是否被授予。
if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.CAMERA},1);
return;
} else {
oprnCamere();
}
3) 在 fragment 类的 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;
}
}
}
关于android - fragment 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40478707/