我開始從亞行外殼共享活動。從亞行外殼開始分享活動
具體來說,我想實現與此相同(工作)的Java代碼片斷:
File dir = Environment.getExternalStorageDirectory();
File yourFile = new File(dir, "/_tmp/1.jpg");
Uri yourFileUri = Uri.fromFile(yourFile);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.setType("image/*");
sendIntent.putExtra(Intent.EXTRA_STREAM, yourFileUri);
sendIntent.setPackage("com.snapchat.android");
startActivity(sendIntent);
這裏是我使用的命令:
adb shell am start -a android.intent.action.SEND -t image/jpeg --es android.intent.extra.STREAM file:///storage/emulated/0/_tmp/1.jpg com.snapchat.android --grant-read-uri-permission
我目前面臨的問題是該應用程序將打開並加載,閃爍黑色一秒但未能加載圖像。
我已經檢查了圖片路徑是通過發出以下命令工作,而在Android畫廊開幕的圖像:
adb shell am start -t image/jpeg -d file:///storage/emulated/0/_tmp/1.jpg
我在做什麼錯?
編輯:
使用命令:
adb shell am start -a android.intent.action.SEND -t image/jpeg --es android.intent.extra.STREAM file:///storage/emulated/0/_tmp/1.jpg com.snapchat.android/com.snapchat.android.LandingPageActivity --grant-read-uri-permission
給出了相同的結果,但是我將它比作在DDMS實際的通話,看到這裏的區別:
登錄通過手動共享通過電話:
10-19 18:01:54.020: D/HtcShareActivity(21561): onItemClick: position=0 activity=com.snapchat.android/com.snapchat.android.LandingPageActivity
10-19 18:01:54.061: I/ActivityManager(724): START u0 {act=android.intent.action.SEND typ=image/jpeg flg=0x1 cmp=com.snapchat.android/.LandingPageActivity (has clip) (has extras)} from uid 10078 on display 0
使用ADB命令進行日誌記錄:
10-19 18:04:29.096: I/ActivityManager(724): START u0 {act=android.intent.action.SEND typ=image/jpeg flg=0x10000000 cmp=com.snapchat.android/.LandingPageActivity (has extras)} from uid 2000 on display 0
正如您所見,(has clip)
不在亞行的調用中。
難道是--grant-read-uri-permission
不是「工作」或至少沒有給予足夠的權限?
如何測試並最終解決此問題?
對你有好處 - 你找到了你想要的命令。但你的根本原因分析是錯誤的。它爲你修復的不是'-es' vs'--eu',而是'image/*'vs'image/jpeg'。 shell globbing(通配符擴展)破壞了您的原始命令。 –
@AlexP。我可以向你保證我浪費了更多的時間來解決'--es' vs'--eu'謎題,而不是忘記編輯我在OP中做的複製和粘貼。好的眼睛,讓我編輯它。 – Snowlav