【问题标题】:get package name of current application which is open on screen? Not working in lollipop?获取当前在屏幕上打开的应用程序的包名?不在棒棒糖中工作?
【发布时间】:2015-08-05 09:11:50
【问题描述】:

我正在使用自定义键盘,当键盘打开时我需要当前包名称。这个键盘将使用不同的不同应用程序打开,所以我需要当前打开的应用程序包名称。 我正在使用以下代码,但它无法正常工作。

  ActivityManager am = (ActivityManager) this
            .getSystemService(Activity.ACTIVITY_SERVICE);
    String packageName = am.getRunningTasks(1).get(0).topActivity
            .getPackageName();

【问题讨论】:

  • 我正在为所有其他应用程序获取 com.android.launcher

标签: android android-intent android-activity android-keypad


【解决方案1】:

我知道这为时已晚,但上面的答案不起作用,我找到了正确的答案,所以我写了这个,

ActivityManager mActivityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
if(Build.VERSION.SDK_INT > 20){
     String mPackageName = mActivityManager.getRunningAppProcesses().get(0).processName;
}
else{ 
     String mPackageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
}

【讨论】:

  • 我已经使用了你的代码,但每次都给我我的应用程序的包名称,它没有给我任何其他应用程序包名称的名称,我正在打开它。我正在 MarshMallow 上进行测试
【解决方案2】:
 ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
 List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
 Log.d("topActivity", "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName());
 ComponentName componentInfo = taskInfo.get(0).topActivity;
 String packageName = componentInfo.getPackageName();

您的清单需要以下权限:

<uses-permission android:name="android.permission.GET_TASKS"/>

【讨论】:

  • 我也实现了这个代码,但是对于其他应用程序我总是得到 com.android.launcher
  • @DevelopmentELGroup:你有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多