gpt4 book ai didi

android - 在 MarshMallow 的小部件中显示来自 SDCard 的图像

转载 作者:IT老高 更新时间:2023-10-28 23:35:38 29 4
gpt4 key购买 nike

在一个小部件中,我使用 remoteView.setImageViewUri() 显示来自 SDCard 的图像。除 MarshMallow 外,此策略正常工作:

错误是:

Unable to open content:  file:///storage/emulated/0/Android/data/applicaitonPackage/files/file.png
open failed: EACCESS (Permission denied)

很明显这是一个权限问题,但我不知道如何为小部件容器授予权限,理论上(见注 1)图像已经存储在共享存储中。

注意1:图片存放的目录是Environment.getExternalStorageDirectory()

下的共享存储

注意2:应用程序不适应MarshMallow,使用targetSdkVersion=15

注意 3:不要只回复解释 MarshMallow 中新的运行时权限。我已经知道权限更改,这不是问题,因为应用程序的目标是 SDKVersion 15,并且应用程序访问外部存储没有任何问题,问题出在我怀疑没有的小部件容器上权限。

最佳答案

您好,这里是为 android M 设置权限的几个步骤,记住您也应该在 list 文件中声明相同的权限。

步骤 1. 声明全局变量:

public static final int MY_PERMISSIONS_REQUEST_LOCATION = 0;

第 2 步。在您的主要 Activity 中使用此代码

private void locationpermission() {
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(activity
,
Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {

// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(activity,
Manifest.permission.ACCESS_COARSE_LOCATION)) {

// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.

} else {

// No explanation needed, we can request the permission.

ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);

// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
}

@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {

// permission was granted, yay! Do the
// contacts-related task you need to do.

} else {

// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}

// other 'case' lines to check for other
// permissions this app might request
}
}

第 3 步。在您的 oncreate 方法中调用此方法,

位置权限();以及您可以从此处调用的任何权限以及您可以在覆盖方法 onRequestPermissionsResult 中获得的每个结果。

谢谢

希望这对你有帮助(Y)。

请引用这里的例子

https://www.dropbox.com/s/w29sljy0zpwwm61/MyApplication.zip?dl=0

关于android - 在 MarshMallow 的小部件中显示来自 SDCard 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36127733/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com