我想答案张贴到这个问题,以防有人是需要解决的。首先,你需要使用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)我能够得到应用程序的列表,现在我只需要想办法从列表中找到正确的应用程序 –