2011-12-29 66 views
5

我使用:將僅在特定應用程序中可見的操作添加到ACTION_SEND中?

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("image/jpeg"); 
(...) 

分享我的應用程序生成的圖像。我想通過

Intent.createChooser(i, "..."); 

我在想意圖過濾器用於android.intent.action.SEND行動將活動添加自定義操作(保存圖像庫)創建的意圖,但是這樣會讓我的活動可見並可供所有應用程序使用。我可以改變的setType(「圖像/ JPEG」)到的setType(「圖像/ *」),並添加

<data android:mimeType="image/foobar"> 

到意向過濾器,但是這樣會讓我看到活動,要求對圖像中的所有應用程序/ * 。

有什麼辦法可以通過調用者程序包名稱(或別的東西,可以區分我的應用程序與其他)過濾動作可見性嗎?

+0

更好的解決辦法是推出自己的選擇對話框,通過自己手工的東西填充,並呼籲'queryIntentActivities的結果() '從'PackageManager'。 – CommonsWare 2011-12-29 14:31:13

回答

2

Android有此需求的很好的解決方案,關鍵是Intent.EXTRA_INITIAL_INTENTS

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("image/jpeg"); 

List<Intent> myAddedIntents = new ArrayList<Intent>(); 
Intent myIntent = new Intent(...); 
myAddedIntents.add(myIntent); 

Intent chooserIntent = Intent.createChooser(intent, "Send via:"); 
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, 
     myAddedIntents.toArray(new Parcelable[] {})); 

startActivity(chooserIntent); 
+0

謝謝!我會嘗試。 – 2012-07-26 10:54:47

相關問題