在我的应用程序中,我想编写接收应用程序运行的广播代码。就像我们运行/打开任何应用程序时,我的广播接收器应该接收它。 我怎样才能获得应用程序名称/包名称???
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>
答案 0 :(得分:4)
这是使用活动管理器完成此操作的好方法。您基本上从活动管理器获取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"
调用任何应用程序时都会触发没有此类事件。任何意图都不会在应用程序启动时广播,因此您可能需要在后台并行运行一个线程来监视顶级活动。
答案 1 :(得分:3)
您可以使用ActivityManager.getRunningAppProcesses()来查找当前正在运行的应用程序。 它将返回当前正在运行的应用程序的ActivityManager.RunningAppProcessInfo。然后,您可以使用PckageManager
获取名称