有没有办法识别应用程序名称?

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 中显示自定义字幕轨道名称

有没有办法让 Visual Studio Code 识别 PHP 文件中的 HTML 语法

有没有办法在图片中获取已识别对象的颜色?