小编Pau*_*ron的帖子

getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES)返回null

如果我打电话

    PackageManager pm = getPackageManager () ;
    List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_PROVIDERS) ;
Run Code Online (Sandbox Code Playgroud)

我得到一个已安装软件包的列表,包括他们声明的任何提供者(即,pis [i] .providers可能是非null).

但是,如果我在标志中包含PackageManager.GET_ACITIVITIES,如

    PackageManager pm = getPackageManager () ;
    List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_ACTIVITIES | PackageManager.GET_PROVIDERS) ;
Run Code Online (Sandbox Code Playgroud)

我希望得到已安装包的"相同"列表,但pis [i] .activities也是非空的.但我没有,我得到一个空列表.

文档中没有提到的标志中包含PackageManager.GET_ACTIVITES有什么特别之处吗?

我目前的工作是将PackageManager.GET_ACTIVITIES从标志中删除,然后循环返回列表,如下所示:

    for (PackageInfo pi : pis) {
        try {
            PackageInfo tmp = pm.getPackageInfo (pi.packageName, PackageManager.GET_ACTIVITIES) ;
            pi.activities = tmp.activities ;
            }
        catch (NameNotFoundException e) {
            Log.e (TAG, e.getMessage ()) ;
            }
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个真正的kludge.

我唯一能提到的getInstalledPackages(PackageManager.GET_ACTIVITIES)返回一个空列表就在这里,但在这种情况下的问题似乎是关于在主应用程序线程外调用getInstalledPackages()的问题,这不是我的情况.

ps这是姜饼的.602 VZW版本,如果重要的话

android installed-applications android-package-managers

5
推荐指数
1
解决办法
2万
查看次数

意图解决方案和ACTION_CHOOSER和ACTION_PICK_ACTIVITY之间的区别

我有一个关于意图解决的问题以及Intent.ACTION_PICK_ACTIVITY和Intent.ACTION_CHOOSER之间的区别(包括它的便利功能版本,Intent.createChooser()).

我正在写一个"包经理"应用程序.在其中我有一个ListActivity,它显示设备上安装的所有软件包(填充了PackageManager.getInstalledPackages()).我还在列表中注册了一个上下文菜单,其中一个项目是"启动".

下面是来自onContextItemSelected()的代码,用于处理"Launch"上下文菜单项.

Intent intent ;
List<ResolveInfo> ris ;
int nLauchables ;
int REQUEST_LAUNCH = 1 ;    // for use in onActivityResult()
// PackageInfo pi ;         // set outside this code

intent = new Intent (Intent.ACTION_MAIN) ;
intent.addCategory (Intent.CATEGORY_LAUNCHER) ;
intent.setPackage (pi.packageName) ; // limit to launchable activities in the package represented by pi

ris = getPackageManager ().queryIntentActivities (intent, 0) ; // get list of launchable activities in pi
nLaunchables = ris.size () ;

if (ris == null || nLaunchables …
Run Code Online (Sandbox Code Playgroud)

android intentfilter android-intent

5
推荐指数
1
解决办法
3546
查看次数