這是我調用設備上的圖像編輯應用程序隱含的意圖:Android的隱含意圖編輯未能加載圖像
startActivity(new Intent(Intent.ACTION_EDIT).setDataAndType(myUri,
getMimeType(myUri)).setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION));
而且我這是怎麼getMimeType:
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
沒有任何問題。
這裏發生了什麼?經過兩天與這種現象的鬥爭,我感到非常困惑。
'myUri'的價值是什麼?你爲什麼使用'image/*'而不是實際的MIME類型(因爲它是*你的內容,所以你知道什麼是MIME類型)? – CommonsWare
myUri是來自圖像文件>> Uri.fromFile(myFile)的一個uri,以及爲什麼我使用image/*而不是實際的MIME類型?我從堆棧中選擇了代碼。現在我已經根據你的指南編輯了這個問題。但我仍然得到相同的結果。 – Eftekhari
「myUri是來自圖像文件的URI」 - 此文件在哪裏?在這種情況下,'Intent.FLAG_GRANT_READ_URI_PERMISSION'和'Intent.FLAG_GRANT_WRITE_URI_PERMISSION'是無用的,因爲它們不涉及'file''Uri'值。 「 – CommonsWare