我正在制作一个表情应用程序,例如 Emojidom https://play.google.com/store/apps/details?id=com.plantpurple.emojidom
当我尝试从微信访问我的应用程序时,我无法做到这一点..但我可以看到可以从微信访问 emojidom 应用程序。我已经在我的应用程序中添加了所有必要的权限来拾取图像,但它仍然没有显示在微信中。但它显示在 Whatsapp 中。我想要这样的..看截图
在微信聊天窗口的顶部,我们可以看到表情符号图标,但我无法让我的图标出现在那里...该怎么做...知道吗?我想我需要编写一个服务来监控微信何时进入前台。知道如何编写这样一个服务来监视特定应用程序何时进入前台吗?
最佳答案
首先,我不知道你是否这样做,但 Emojidom 在这里所做的并不是在操作栏中包含图标,而是将自己绘制在你的应用程序之上,作为 float 图标。一个众所周知的例子是 Facebook Messenger 应用程序,它为 float 在屏幕上的 Activity 聊天绘制图标。要实现此目的,您可以按照本教程进行操作: 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
类,很容易知道包的名称,因为你可以轻松地检查所有包名称(例如在播放网站中),你可以准备一个列表您要考虑的应用程序包的列表,并将列表放入应用程序的变量中。
第三。我不知道在微信中,但在whatsapp中,该图标仅在聊天打开时显示(即您在聊天列表或配置屏幕中看不到它)。
为此,您可以检查 Activity 应用程序中实际运行的 Activity ,我们可以使用此方法,它将检查任何正在运行的任务的包名称是否与前台应用程序相同,并返回信息
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 类以获取您需要的信息。
要知道每个应用程序的每个屏幕代表什么 Activity ,您可以尝试在Google上查找,或者制作一个简单的应用程序来列出您自己的手机上所有正在运行的任务,并运行您想要检查的所有应用程序
关于android - 如何在微信中添加我的表情应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536834/