所以我有一個共享按鈕,將共享圖像和文本的主體。爲什麼我的ACTION_SEND可以完美地處理API 25+,但是會在以前的API上出現混亂?
在牛軋糖(API 25)和奧利奧(API 26)上,它的工作原理絕對完美。但是,當涉及到一些老版本時,它並不像預期的那樣工作。
棉花糖(API 23):插入圖像很好,但沒有正文。 棒棒糖(API 22):當您彈出共享按鈕並彈出錯誤時崩潰「不幸的是,消息已停止。」發生這種情況時,LOGCAT不會向我顯示任何錯誤。
這裏是我的分享按鈕代碼:
if (id == R.id.action_shareWine) {
Intent intentShare = new Intent(Intent.ACTION_SEND);
intentShare.putExtra(intentShare.EXTRA_STREAM, imageURI);
intentShare.setType("image/*");
intentShare.putExtra(Intent.EXTRA_TEXT, "body of text goes here");
if (intentShare.resolveActivity(getPackageManager()) != null) {
startActivity(intentShare);
}
return true;
}
這裏是一幅畫給一個視覺的想法怎麼回事:
任何人有任何想法可能是怎麼回事這裏?
更新1
這裏是崩潰日誌的棒棒糖模擬器:
FATAL EXCEPTION: Mms-1
Process: com.android.mms, PID: 7570
java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
這我不知道爲什麼它正在發生,因爲光標加載圖像只在同一個活動中的ImageView中罰款。
'imageURI'的價值是什麼?此外,由於它是你的圖像,你知道什麼是MIME類型,爲什麼你使用通配符? – CommonsWare
'imageURI = Uri.parse(cursor.getString(cursor.getColumnIndexOrThrow(WineContract.WineEntry.COLUMN_WINE_IMAGE)));'我知道遊標具有正確的URI,因爲相同的代碼可以在活動中設置imageview。 – andrdoiddev
像之前的評論所說,我很確定所有制造商和設備都不支持「image/*」。您需要指定確切的地雷類型「image/jpeg」或「image/png」 – AlonsoFloo