如何使用广播接收器获取运行的应用程序/包名(how to get running applicati

2019-10-18 00:49发布

在我的应用我想写的依据申请接收广播码running.like当我们运行/打开我的广播接收器应该接受它的任何应用程序。 我怎样才能获得应用程序名称/包的名字???

 public class Receiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    if("android.intent.action.PACKAGE_FIRST_LAUNCH".equals(intent.getAction()))
     System.out.println("context..."+context.getPackageName());


}
 }

androidmanifest文件 -

  <receiver
        android:name="com.veg.app.Receiver"
        android:enabled="true"

        android:label="StartReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_FIRST_LAUNCH" />      
            <category android:name="android.intent.category.DEFAULT"/> 
        </intent-filter>
    </receiver>

Answer 1:

下面是使用行为管理做的好方法。 你基本上得到活动管理的runningTasks。 它总是先返回当前活动的任务。 从那里,你可以得到topActivity。

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
 // get the info from the currently running task
     List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); 

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

     ComponentName componentInfo = taskInfo.get(0).topActivity;
   componentInfo.getPackageName();

你需要将你的清单以下权限:

uses-permission android:name="android.permission.GET_TASKS"

而且有被调用的任何应用程序时发射没有这样的事件 。 任何意图没有播出上的应用程序的开始,所以ü可能需要在后台运行的平行线程监视在顶。



Answer 2:

你可以使用使用ActivityManager.getRunningAppProcesses()找到在当前时刻的运行过程中出现的应用程序。 这将返回ActivityManager.RunningAppProcessInfo的当前运行的应用程序。 然后,你可以使用名称PckageManager



文章来源: how to get running application/package name using broadcast receiver