gpt4 book ai didi

android隐式 Intent 编辑无法加载图像

转载 作者:搜寻专家 更新时间:2023-11-01 09:46:01 25 4
gpt4 key购买 nike

这是我在设备上调用图像编辑应用程序的隐含 Intent :

startActivity(new Intent(Intent.ACTION_EDIT).setDataAndType(myUri,
getMimeType(myUri)).setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION));

这就是我获取 MimeType 的方式:

public String getMimeType(Uri uri) {
String mimeType = null;
if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
ContentResolver cr = getContentResolver();
mimeType = cr.getType(uri);
} else {
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri
.toString());
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
fileExtension.toLowerCase());
}
return mimeType;
}

对于某些应用程序,它会在加载时崩溃:

在应用程序 Sketch_Camera 上,只有一个不可见的页面加载并禁用与我的应用程序的交互。

在应用程序 AirBrush 上它加载应用程序但崩溃并显示此消息“无法加载图像”。

我的是16,跟sdk的最低版本有关系吗?我也在 9 的最低 sdk 版本上对此进行了测试,结果没有变化。

还有什么我应该添加到这个 Intent 中以使用所有应用程序吗?

我也试过 putExtra 但没有用:

.putExtra(Intent.ACTION_EDIT, myUri);

我的设备上有一些图库应用程序,它们都可以毫无问题地启动 Sketch_CameraAirBrush

这里发生了什么?在与这种现象斗争了两天之后,我感到非常困惑。

最佳答案

It's a file created from path of one media store file by querying MediaStore.Images.Media.EXTERNAL_CONTENT_URI

不能保证其他应用程序有权访问此位置,甚至不能保证您的应用程序有权访问此位置。例如,图像可能在 removable storage 上.此外,the file Uri scheme is being banned for cross-app usage , 无论如何。

改用content Uri。例如,在 this sample app 中,我在 MediaStore 中查询视频。给定一个位于特定视频的名为 rowCursor,我通过以下方式为其生成 Uri:

videoUri=
ContentUris.withAppendedId(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, row.getInt(row.getColumnIndex(MediaStore.Video.Media._ID)));

这个 Uri 既可以用于我自己的目的(例如,交给 Picasso 获取缩略图,交给 VideoView 进行播放),也可以交给第三方应用程序(例如,用于播放的 ACTION_VIEW)。

除了将基本 Uri 更改为您查询的那个 (MediaStore.Images.Media.EXTERNAL_CONTENT_URI) 之外,相同的基本代码应该适用于您。

此外,从您的 Intent 中删除标志。这些仅适用于 Intent 指向您自己的 ContentProvider 的情况,您的原始代码或您的 Uri 都不是这种情况从 withAppendedId() 创建。

关于android隐式 Intent 编辑无法加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38074022/

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