因此,如果你曾经使用过Bitmoji键盘,你知道它在你正在使用的任何应用程序中共享你选择的Bitmoji,无论是信使还是没有正常分享意图的短信,你可以选择与之分享的应用程序。这是我的第一个Android项目,因为我一直在为iOS开发。在这种情况下iOS可以轻松实现,因为您只需将图像复制到剪贴板(粘贴板),然后用户就可以将其粘贴到任何他们想要的位置。
现在我正在开发一个Android IME,需要知道一种方法来了解用户当前正在输入的应用程序?
有人能指出我的方向吗?在过去的一周里,我已经学到了很多关于Android开发的知识,而且我的头脑还有很多文档,尤其是 ContentProvider ,并且正确地将图像共享到Android SMS应用程序。
答案 0 :(得分:0)
尝试使用以下代码获取包名称:
ActivityManager mActivityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
if(Build.VERSION.SDK_INT > 20){
String mPackageName = mActivityManager.getRunningAppProcesses().get(0).processName;
}
else{
String mPackageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
}
答案 1 :(得分:0)
如果有人需要解决方案,我想发布这个问题的答案。首先,您需要使用InputMethod的EditorInfo类来获取当前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);
}
}