0

我正在开发一个适用于android的启动器应用程序,因此我需要我的应用程序通过ACTION_PACKAGE_REMOVED,ACTION_PACKAGE_CHANGED等影响可用于与用户一起启动(由我的应用程序显示)。Intent.ACTION_PACKAGE_CHANGED - 应用程序组件的广播禁用未收到

广播已安装的程序包,包装中取出,包更新&包禁用/启用的正常运作。但是当包装的整个经过钛备份或者一些类似的应用程序它的通过得到通知到我的广播接收器禁用类似的问题系统广播被调用了Intent.ACTION_PACKAGE_CHANGED动作,但是当像MyAndroidTools这样的应用程序单独禁用像活动这样的应用程序组件时,它不会收到通知给我的广播接收器,也就是说没有从系统收到广播(Intent.ACTION_PACKAGE_CHANGED广播)由于禁用了个人应用程序组件。

这里是广播接收器与必要的意图过滤我的舱单申报:

<receiver android:name=".LauncherBroadcastReceiver"> 
      <intent-filter android:priority="100"> 
       <action android:name="android.intent.action.PACKAGE_ADDED"/> 
       <action android:name="android.intent.action.PACKAGE_CHANGED"/> 
       <action android:name="android.intent.action.PACKAGE_REPLACED"/> 
       <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
       <data android:scheme="package" /> 
      </intent-filter> 
     </receiver> 

一切工作为intented,但只有当整个包被禁用或启用,但不是在单个组件(比如活动)已禁用或启用。

有肯定这样做,因为我有测试与一些其它发射器即当单个组件被禁用它被反映在发射&反之亦然(在应用程序的抽屉消失)用于使该组件检查了它的一些方法。所以那些发射器正在接收这个信息可能是一些听众或广播。我的问题

回答

0
`<receiver android:name=".LauncherBroadcastReceiver" exported="true" enabled="true">` 
+0

在我的情况下,这两个值默认情况下都是true,因为我说我能够接收包的变化意图,所以这不是问题,但感谢您的帮助。 –

0

一个可能的解决方案(不理想),就是以活动的onResume方法,比更新禁用启动的activites列表以反映更改。

为了让残疾启动的活动清单:所有启动的活动(包括禁用的)

Intent mainLaunchIntent = new Intent(Intent.ACTION_MAIN); 
     mainLaunchIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
     mainLaunchIntent.addFlags(PackageManager.MATCH_DISABLED_COMPONENTS); 
     List<ResolveInfo> activitiesInformationList = packageManager.queryIntentActivities(mainLaunchIntent, 0); 
  • 查询包管理器仅启用启动的活动

    1. 查询包管理器012-

      Intent mainLaunchIntent = new Intent(Intent.ACTION_MAIN); 
           mainLaunchIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
           List<ResolveInfo> activitiesInformationList = packageManager.queryIntentActivities(mainLaunchIntent, 0); 
      
    2. List(1-2)将成为残疾人活动的名单。我还没有测试过,因为对于我来说不理想,我想等待更多的答案,但如果有人发现相同的帮助可以使用它。

  • 相关问题