我有这个应用程序,将选择图片到画廊,并显示它到使用Imageview的测试。我的问题是它不会在Android M上工作。我可以选择图像,但不会在我的测试中显示。他们说我需要询问权限才能访问android M上的图像,但不知道如何。请帮忙。如何询问访问Android M上的图库的权限?
回答
从Android 6.0(API级别23)开始,用户在应用程序运行时为应用程序授予权限,而不是在安装应用程序时授予应用程序权限。
类型1-当您的应用程序请求权限时,系统会向用户显示一个对话框。当用户响应时,系统会调用您的应用程序的onRequestPermissionsResult()方法,并将其传递给用户响应。您的应用必须重写该方法才能确定是否授予了该权限。该回调将传递给您传递给requestPermissions()的相同请求代码。
private static final int PICK_FROM_GALLERY = 1;
ChoosePhoto.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v){
try {
if (ActivityCompat.checkSelfPermission(EditProfileActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(EditProfileActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, PICK_FROM_GALLERY);
} else {
Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, PICK_FROM_GALLERY);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults)
{
switch (requestCode) {
case PICK_FROM_GALLERY:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, PICK_FROM_GALLERY);
} else {
//do something like displaying a message that he didn`t allow the app to access gallery and you wont be able to let him select from gallery
}
break;
}
}
类型2-如果你想给运行时允许回在一个地方那时候你可以按照下面的链接
Android 6.0 multiple permissions
而且在清单中添加权限您的要求
<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" />
注 -如果Manife st.permission.READ_EXTERNAL_STORAGE产生错误,请将其替换为android.Manifest.permission.READ_EXTERNAL_STORAGE。
==>如果您想了解更多有关运行许可,则请按照下面的链接
https://developer.android.com/training/permissions/requesting.html
好感谢前。我会试试这个.. – Crissy
如果你有WRITE_EXTERNAL_STORAGE,你不需要READ_EXTERNAL_STORAGE。 WRITE包含READ。 –
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);
}
Add permissions in Manifest Also
<uses-permission android:name="android.permission.CAMERA" />
- 1. 在运行时询问权限Android M +
- 2. Android M权限模型:询问外部jar使用的权限
- 3. 对话框中的Android M权限问题“不要再询问”
- 4. Android M运行时权限问题
- 5. 多仓库访问权限?
- 6. 访问图库的Android 6运行时权限。
- 7. Android Espresso,RecyclerViewActions询问权限
- 8. 权限访问
- 9. 访问权限
- 10. Android M AppWidgetProvider权限
- 11. Android应用程序的权限访问
- 12. 访问媒体存储的Android权限
- 13. 如何访问在Android asmack库中具有私有访问修饰符的访问权限IQTypeFilter?
- 14. 询问运行权限onMapsReady Android的
- 15. 如何在有限访问权限的项目上工作?
- 16. 如何在Android 7.0仿真器上获得root访问权限?
- 17. Amazon Web Services上的访问权限'EC2
- 18. 403禁止:访问图像的权限
- 19. 访问Chrome的权限:// thumb/*
- 20. 的DirectoryEntry IIS访问权限
- 21. C++的访问权限
- 22. 权限访问sys.dm_db_index_usage_stats
- 23. 关于Android权限的问题权限
- 24. 查询基于存储库的github用户访问权限
- 25. PDP访问权限限制
- 26. 试图以访问权限的方式访问套接字
- 27. 无法检索访问令牌。状态:微博上的401访问权限android
- 28. 版本的Android M - 相机权限问题
- 29. 访问权限问题的FCKeditor
- 30. CryptographicException:拒绝访问 - 如何授予用户存储上的访问权限?
问的问题在这里只是阅读开发商的网站一旦 – Piyush