1
我的代碼如下 -無法分享使用ACTION_SEND意圖圖像微信和Line
Intent prototype = new Intent(Intent.ACTION_SEND);
prototype.setData(uri); // uri is of the image file
prototype.setType(image/*);
prototype.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
prototype.putExtra(Intent.EXTRA_STREAM, uri);
List<ResolveInfo> resInfo = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (!resInfo.isEmpty())
{
for (ResolveInfo resolveInfo : resInfo)
{
if (resolveInfo.activityInfo == null)
{
continue;
}
// Retrieve the package name and class name to populate the chooser intent
Intent intent = (Intent) prototype.clone();
String packageName = resolveInfo.activityInfo.packageName;
intent.setPackage(packageName);
intent.setClassName(packageName, resolveInfo.activityInfo.name);
targetedIntents.add(intent);
}}
Intent chooserIntent = Intent.createChooser(topIntents.remove(targetedIntents.size() - 1), chooserTitle);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toArray(new Parcelable[] {}));
當我從選擇器中選擇微信和在線應用程序,沒有任何反應。線路應用程序只顯示一個無法共享的錯誤。微信不提供任何消息。使用我的代碼在WhatsApp和環聊中共享可以很好地工作。
我們可以在圖庫上分享微信和線上的圖片。這是如何運作的?這不是發送動作意圖嗎?我有同樣的問題
「我的代碼如下」 - 不,它不是,因爲代碼不會編譯。 「這是如何運作的?」 - 「ACTION_SEND」。你的'Uri'是什麼?既然你正在使用'FLAG_GRANT_READ_URI_PERMISSION',你使用'FileProvider'還是實現你自己的流'ContentProvider'? – CommonsWare
嗨@CommonsWare,我正在實現我自己的內容提供者。由於我的代碼是專有的,我無法完整發布它。 Uri的形式爲:// ...,圖像存儲在我的應用程序目錄中。奇怪的部分是我的代碼在環聊,Whatsapp,FB Messenger上運行,但微信和線路無法使用。我在我的代碼中也使用了ACTION_SEND意圖,但是共享不起作用的原因是什麼,而它對於圖庫起作用。 – user1154309
你可以嘗試在你的ContentProvider的'query()'方法中混合[my'LegacyCompatCursorWrapper'](https://github.com/commonsguy/cwac-provider#usage-legacycompatcursorwrapper),或者嘗試實現[這個模式](http://stackoverflow.com/a/25020642/115145)用於處理一些寫得不好的流式ContentProvider客戶端。 – CommonsWare