我有这个应用程序,它将选择图像到图库并使用Imageview将其显示给测试。我的问题是它不能在Android M上工作。我可以选择图像,但不会在我的测试中显示。他们说我需要获得访问Android M图像的权限但不知道如何。请帮忙。
答案 0 :(得分:17)
从Android 6.0(API级别23)开始,用户在应用运行时向应用授予权限,而不是在安装应用时授予权限。
类型1 - 当您的应用请求权限时,系统会向用户显示一个对话框。当用户响应时,系统会调用您应用的onRequestPermissionsResult()方法,并向其传递用户响应。您的应用必须覆盖该方法才能确定是否已授予权限。回调传递的是您传递给requestPermissions()的相同请求代码。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
类型2 - 如果您想在一个地方背靠背提供运行时权限,那么您可以按照以下链接
Android 6.0 multiple permissions
在Manifest中添加对您的要求的许可
{{1}}
注意 - 如果Manifest.permission.READ_EXTERNAL_STORAGE产生错误,请将其替换为android.Manifest.permission.READ_EXTERNAL_STORAGE。
==&gt; 如果您想了解有关运行时权限的更多信息,请点击以下链接
https://developer.android.com/training/permissions/requesting.html
答案 1 :(得分:0)
public void pickFile() {
int permissionCheck = ContextCompat.checkSelfPermission(getActivity(),
CAMERA);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
getActivity(),
new String[]{CAMERA},
PERMISSION_CODE
);
return;
}
openCamera();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
@NonNull int[] grantResults) {
if (requestCode == PERMISSION_CODE) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
openCamera();
}
}
}
private void openCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_CODE);
}
<uses-permission android:name="android.permission.CAMERA" />