如何查找应用程序之间显示的活动的包名称

时间:2014-06-30 04:51:19

标签: android

我正在创建一个隐藏我们呼叫号码的应用程序,但是当我们挂断电话时会出现一个显示手机号码的屏幕如何找到该屏幕的包裹名称?

final PackageManager pm = getPackageManager();
             //get a list of installed apps.
             List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

             for (ApplicationInfo packageInfo : packages) {
                 Log.d(TAG, "Installed package :" + packageInfo.packageName);
                 Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 
             }

我试过这个,但我只得到我的应用程序包名称而不是android's activity package name

2 个答案:

答案 0 :(得分:0)

您应该可以获得正在运行前台的任务并从中提取包名称。

 private String getCurrentTopPackage() {

        ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1);
        ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
        return ar.topActivity.getPackageName().toString();
    }

您应定期运行线程或计时器任务以获取最顶层的活动包名称。

答案 1 :(得分:0)

只需使用以下方式即可获得:

全班同学:

public static String PACKAGE_NAME;

on onCreate:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    PACKAGE_NAME = getApplicationContext().getPackageName();
}

然后,您可以通过Main.PACKAGE_NAME访问它。