有没有办法识别应用程序名称?
Posted
技术标签:
【中文标题】有没有办法识别应用程序名称?【英文标题】:Is there a way to identify the Apps names? 【发布时间】:2021-09-11 01:25:52 【问题描述】:我正在开发一项在第三方应用程序表单上具有自动填充功能的服务。现在我需要知道是否有办法识别第三方应用名称。
这样做的原因是我有一个有效的网络扩展程序,它已经有要填写的表单信息,所以现在我想在用户打开相同的公司应用程序时也填写这些数据,例如用户打开 Facebook 或Messanger 以及当它显示表单时,我的服务将检查该用户是否已经为 Facebook 存储了任何数据,或者数据何时来自应用程序,以及用户是否让我将其保存以供以后在其他设备和平台上使用。
有可能吗?我看到好像过度服务或填充服务只是泛化了,我不确定是否可以根据获取数据的应用程序按应用程序名称分组。
【问题讨论】:
【参考方案1】:据我了解您的查询,您有 x 个应用程序的列表,并检查其中哪些 x 个应用程序正在用户的设备上运行。
您无法在 android 中检测到应用启动。 但是,您可以使用ActivityManager 类获取当前打开的应用列表,如下所示:
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessesList = activityManager.getRunningAppProcesses();
然后检查您要查找的应用是否在列表中。
int size = runningAppProcessesList.size();
for (int i = 0; i < size; i++)
ActivityManager.RunningAppProcessInfo processInfo = runningAppProcessesList.get(i);
if(processInfo.processName.equals(APPNAME))
//user has this app
希望这会有所帮助!
【讨论】:
谢谢,但我的意思是能够识别前台应用程序。让我继续上面的 Facebook 示例。假设用户一直在使用我的扩展程序在计算机网络浏览器上登录他/她的 Facebook 帐户,现在用户刚刚获得一部新手机并安装了 Facebook,但尚未登录,因为用户没有想要输入信息,但希望我的自动填充服务自动填充它。现在的问题是如何确定打开并具有登录表单的应用程序是 Facebook?【参考方案2】:上面的代码 sn-p 将适用于后台应用程序。 要检查应用程序是否在前台运行,请使用以下代码:
public static boolean isForeground(Context context, String myPackage)
ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > runningTaskInfo = manager.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
if(componentInfo.getPackageName().equals(myPackage))
return true;
return false;
您只需要知道所需应用的包名即可。 既然你想知道表格的自动填写,你可以使用Autofill Service in Android。
【讨论】:
以上是关于有没有办法识别应用程序名称?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法检索分配给 TableLayout 对象的变量名称以从另一个对象中识别?
我希望我的 android 应用程序能够识别手指弹响,有啥办法吗?
有没有办法在 AVPlayerViewController 中显示自定义字幕轨道名称