我正在制作一个像Emojidom https://play.google.com/store/apps/details?id=com.plantpurple.emojidom这样的表情应用程序
当我试图从WeChat访问我的应用程序时,我不能这么做。但是我可以从WeChat上看到这个表情应用程序。我已经在我的应用程序中添加了所有必要的预演,以获取图像,但它仍然没有出现在微信中。不过,它会出现在whatsapp上。我想要这样..。见截图

在微信的这个聊天窗口的顶部,我们可以看到表情图标,但我无法让我的图标出现在那里。怎么做..。知道吗?我想我需要写一个服务来监控微信的前景。知道如何编写这样的服务来监视特定的应用程序何时到达前台吗?
发布于 2014-01-14 19:59:11
,首先,,我不知道你是不是这样做的,但是Emojidom在这里做的不是在动作栏中包含一个图标,而是在你的应用程序上面画一个图标,作为一个浮动图标。这方面的一个众所周知的例子是应用程序,它为在屏幕上浮动的活动聊天绘制图标。要实现这一点,您可以遵循本教程:http://www.piwai.info/chatheads-basics/
第二代,Emojidom只在前景中有一个合格的应用程序时才画自己。我们很幸运,因为我们有一种方法来检测前景中的应用程序。
为此,我们创建了如下方法:
private RunningAppProcessInfo getForegroundApp() {
RunningAppProcessInfo temp;
ActivityManager mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
Iterator <RunningAppProcessInfo> i = mActivityManager.getRunningAppProcesses().iterator();
while(i.hasNext()){
temp = i.next();
if(temp.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
return temp;
}
}
return null;
}如果您检查RunningAppProcessInfo类,很容易知道包的名称,因为您可以轻松地检查所有的包名(在play网站中用于即时),您可以准备要考虑的应用程序的包列表,并将该列表放入应用程序中的变量中。
第三,我在微信中不认识,但在whatsapp中,只有在聊天打开时才会显示图标(也就是说,在聊天或配置屏幕列表中看不到它)。
为此,您可以检查活动在活动应用中实际运行的是什么,我们可以使用此方法,该方法将检查任何正在运行的任务的包名是否与前台应用程序相同,并返回信息。
private ComponentName getRunningActivity(RunningAppProcessInfo target){
ActivityManager.RunningTaskInfo info;
ActivityManager mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
Iterator <ActivityManager.RunningTaskInfo> i = mActivityManager.getRunningTasks(100).iterator();
while(i.hasNext()){
info=i.next();
if(info.baseActivity.getPackageName().equals(target.processName)){
return info.topActivity;
}
}
return null;
}查看ComponentName类以获取所需的信息。
要知道什么活动代表每个应用程序的每个屏幕,您可以尝试在google上查找,或者制作一个简单的应用程序来列出在您自己的手机上运行的所有任务,并运行您想要检查的所有应用程序。
发布于 2014-01-01 11:45:38
我可以建议一个疯狂的根来接受这个程序,并建议DisAssembleit来学习它是如何实现的。要想在做这件事时得到我的帮助,请联系:
发布于 2014-01-13 03:23:47
这段代码是检查你的应用程序的背景。您可以修改它以满足您的需要:https://stackoverflow.com/a/11787496/2521931
https://stackoverflow.com/questions/20536834
复制相似问题