2015-12-21 116 views
-1

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

ActivityManager mActivityManager = (ActivityManager)PhotoActivity.this.getSystemService(Context.ACTIVITY_SERVICE); 
      if(Build.VERSION.SDK_INT > 20){ 
       String mPackageName = mActivityManager.getRunningAppProcesses().get(0).processName; 
       Log.e("Checking package:  ","Checking current application package"+mPackageName); 
      } 
      else{ 
       String mPackageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName(); 
      } 
+1

这是一个约一千个问题重复。仅供参考,您使用的破解在Android 5.1.1和6.0中被破解。官方认可的替代品是Usage Stats API,但它不适用于所有设备。 –

回答

1

在android系统

 ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

// display the current class name 
     Toast.makeText(getApplicationContext(), taskInfo.get(0).topActivity.getClassName(), Toast.LENGTH_LONG).show(); 
     ComponentName componentInfo = taskInfo.get(0).topActivity; 

// current class package name 
      String packageName = componentInfo.getPackageName(); 
获取当前包名

添加到您的项目清单的权限

<uses-permission android:name="android.permission.GET_TASKS"/> 
0
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

Log.d("current task :", "CURRENT Activity ::" + taskInfo.get(0).topActivity.getPackageName()); 
+0

这个破解在Android 5.0中被破解。 –

+0

嗨,它返回null –

0

使用下面的代码: -

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
List l = am.getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED); 
Iterator i = l.iterator(); 
PackageManager pm = this.getPackageManager(); 
while (i.hasNext()) { 
    ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next()); 
    try { 
     CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(
     info.processName, PackageManager.GET_META_DATA)); 
     Log.w("LABEL", c.toString()); 
    } catch (Exception e) { 
     // Name Not FOund Exception 
    } 
} 

而且不要忘记使用许可

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

嗨Ravindra Kushwaha,感谢您的答复。它不能正常工作,因为它获得自定义键盘的相​​同包名称而不是当前正在运行的打开的应用程序。我正在使用Android 5.0 –

+0

@SakibSyed ...好吧...让我试试... –

相关问题