如何在Android中获得带有广播接收器的app的包名?

时间:2015-04-15 11:24:29

标签: android android-intent service broadcastreceiver android-broadcast

我想获取用户试图取消的应用程序包名称..我使用以下代码:

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

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

ComponentName componentInfo = taskInfo.get(0).topActivity;
Log.d("topActivity", "CURRENT Package ::" + componentInfo.getPackageName());

但是它提供了当前运行活动的packge名称。我想获得该特定应用程序的软件包名称。有人知道请帮助我。

3 个答案:

答案 0 :(得分:1)

  • 创建接收器

    <receiver android:name=".PackageReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED"/> <action android:name="android.intent.action.PACKAGE_CHANGED"/> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="package"/> </intent-filter> </receiver>

  • 在OnReceive()中 通过intent.getAction()获取行动 通过intent.getData().getSchemeSpecificPart()

  • 获取套餐

答案 1 :(得分:0)

包名称存在于您从BroadcasReceiver获取的Intent中,使用&#34; getData()&#34;函数,已安装/卸载的软件包ComponentName

答案 2 :(得分:0)

首先以你获得的方式获得ComponentName。之后获取ApplicationInfo实例

PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(componentName.getPackageName(), 0);

现在获取包名称为appInfo.packageName。 check here