gpt4 book ai didi

android - 如何使用广播接收器获取正在运行的应用程序/包名称

转载 作者:行者123 更新时间:2023-11-29 14:39:28 24 4
gpt4 key购买 nike

在我的应用程序中,我想编写接收正在运行的应用程序的广播的代码。就像当我们运行/打开任何应用程序时,我的广播接收器应该接收它。如何获取应用名称/包名称???

 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>

最佳答案

这是使用 Activity 管理器执行此操作的好方法。您基本上可以从 Activity 管理器中获取 runningTasks。它总是首先返回当前 Activity 的任务。从那里您可以获得 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();

您的 list 需要以下权限:

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

并且在调用任何应用程序时都不会触发没有此类事件。任何 Intent 都不会在应用程序启动时广播,因此您可能需要一个在后台并行运行的线程来监视顶级 Activity 。

关于android - 如何使用广播接收器获取正在运行的应用程序/包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16098042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com