我想答案張貼到這個問題,以防有人是需要解決的。首先,你需要使用EditorInfo類INPUTMETHOD的使用來獲得當前InputConnetion的的packageName:
EditorInfo editorInfo = getCurrentInputEditorInfo();
String inputConnectionPackageName = editorInfo.packageName;
然後,你需要查詢你的意圖的活動,看看哪些應用程序的用戶已經將處理你的意圖試圖發送。使用:
PackageManager pManager = getPackageManager();
List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
mApps = pManager.queryIntentActivities(intent,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
然後,所有你需要做的就是創建一個For循環和比較:
for (int i = 0; i < mApps.size()-1; i++) {
ResolveInfo info = mApps.get(i);
if (info.activityInfo.packageName.equalsIgnoreCase(editorInfo.packageName)) {
intent.setPackage(info.activityInfo.packageName);
//send out the intent
startActivity(intent);
}
}
我與活動和包管理器玩,但我沒有從他們那裏得到任何信息除了在調試器中關於我自己的IME服務的信息之外.....從安全角度來看,這對我來說很有意義,並將應用程序保留在沙盤上。我只是無法弄清楚他們如何推送或共享任何應用程序正在使用的數據。如果我使用短信,它將與SMS應用程序共享圖像,如果我使用gmail與gmail等共享的話。如果我沒有包含選擇器,但我的意圖是自動的。分享到SMS應用程序。 –
好的,感謝這[POST](http://stackoverflow.com/questions/6827407/how-to-customize-share-intent-in-android/9229654#9229654)我能夠得到應用程序的列表,現在我只需要想辦法從列表中找到正確的應用程序 –