Android获取当前打开的应用程序的包名

Android获取当前打开的应用程序的包名,android,package-managers,custom-keyboard,Android,Package Managers,Custom Keyboard,我正在使用自定义键盘,当键盘打开时,我需要当前的包名。此键盘将与不同的应用程序一起打开,因此我需要当前打开的应用程序包名称。我正在使用以下代码,但它不能正常工作 ActivityManager mActivityManager = (ActivityManager)PhotoActivity.this.getSystemService(Context.ACTIVITY_SERVICE); if(Build.VERSION.SDK_INT > 20){

我正在使用自定义键盘,当键盘打开时,我需要当前的包名。此键盘将与不同的应用程序一起打开,因此我需要当前打开的应用程序包名称。我正在使用以下代码,但它不能正常工作

   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();
            }
ActivityManager am=(ActivityManager)getSystemService(ACTIVITY_服务);
List taskInfo=am.getRunningTasks(1);
Log.d(“当前任务:,”当前活动::“+taskInfo.get(0.topActivity.getPackageName());

使用以下代码:-

 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"/>

在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();
ActivityManager am=(ActivityManager)this.getSystemService(ACTIVITY_服务);
List taskInfo=am.getRunningTasks(1);
//显示当前类名
Toast.makeText(getApplicationContext(),taskInfo.get(0).topActivity.getClassName(),Toast.LENGTH_LONG).show();
ComponentName componentInfo=taskInfo.get(0).topActivity;
//当前类包名称
字符串packageName=componentInfo.getPackageName();
将此添加到项目清单权限中

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


Android 5.0破解了这一漏洞。这是大约一千个问题的重复。仅供参考,您使用的黑客程序在Android 5.1.1和6.0中被破解。官方认可的替代品是Usage Stats API,但并不是在所有设备上都可用。嗨,Ravindra Kushwaha,谢谢你的回复。它不能正常工作,因为它得到了和自定义键盘相同的包名,而不是当前正在运行的打开的应用程序。我用的是安卓5。0@SakibSyed……好吧……让我试试。。。
<uses-permission android:name="android.permission.GET_TASKS"/>