java – 获取一个活动的ResolveInfo对象知道它的名字?

我想将我的活动(com.myapp.launcher.settings)添加到空ArrayList中.

    ArrayList<ResolveInfo> selectedApps = new ArrayList<ResolveInfo>();
    selectedApps.add(/*WHAT GOES IN HERE?*/);

但我不知道如何使用我的活动获取ResolveInfo对象.

我设法制定了一个解决方法,遍历所有应用程序以查找我的活动.但它不是非常有效或实用:

    // Get an array list of all apps
    ArrayList<ResolveInfo> allApps = (ArrayList<ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED);
    for(final ResolveInfo app : allApps) {
        // If it's name is "com.myapp.launcher.settings" add it
        if(app.activityInfo.name.equals("com.myapp.launcher.settings")) {
                selectedApps.add(app);
            }
        }

解决方法:

只需使用具有明确意图的resolveActivity即可.可能是这样的:

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.myapp", "com.myapp.launcher.settings"));
ResolveInfo app = pm.resolveActivity(intent, 0);
selectedApps.add(app);

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...