这是我在设备上调用图像编辑应用程序的隐含意图:
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
,它会加载应用程序,但会因“加载图像失败”消息而崩溃。
是否与我的最低 sdk 版本有关,因为我的是 16?我也在 9 的最低 sdk 版本上对此进行了测试,结果没有变化。
为了与所有应用程序一起工作,我还应该添加什么其他内容吗?
我也试过 putExtra 并没有帮助:
.putExtra(Intent.ACTION_EDIT, myUri);
我的设备上有一些图库应用程序,它们都启动Sketch_Camera
并且AirBrush
没有任何问题。
这里发生了什么事?经过两天与这种现象的斗争,我感到很困惑。