android 是否有方法识别应用程序名称?

pcww981p  于 2022-12-09  发布在  Android
关注(0)|答案(2)|浏览(99)

我正在开发一个在第三方应用程序表单上自动填充的服务。现在我需要知道是否有一种方法来识别第三方应用程序的名称。
这样做的原因是,我有一个工作的web扩展,已经有表单信息要填写,所以现在我想也填写这些数据,如果用户打开相同的公司应用程序,例如,用户打开Facebook或Messanger,当它显示表单时,我的服务将检查此用户是否已经存储了Facebook的任何数据,或当数据来自应用程序,如果用户让我保存它其他设备和平台上的用户。
有可能吗?我看到过度服务或填充服务只是泛化,我不确定是否可以根据数据来源的应用程序名称进行分组。

kninwzqo

kninwzqo1#

上面的代码片段适用于后台应用程序。要检查应用程序是否在前台运行,请使用以下代码:

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

bttbmeg0

bttbmeg02#

您无法在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
    }
}

相关问题