3

我正在尝试向我的应用程序添加一个按钮。单击时,我想启动一个显示所有快捷方式或已安装​​应用程序的选择对话框。选择一个应该永久设置按钮以启动该应用程序。

我了解如何使用 packagemanager 获取已安装应用程序的列表:

PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

但是我真的需要接受这个并使用 ListAdapter 并从头开始创建一个单独的对话框吗?

我觉得我在其他应用程序中多次看到此选择菜单(例如,当您添加快捷方式时的任何启动器应用程序,或者当您添加新快捷方式时在 Google 的 Car Home 应用程序中)。没有使用此快捷选择菜单的常用方法吗?

我已经搜索了这些论坛,找不到其他的。任何帮助都感激不尽。谢谢你。

4

2 回答 2

1

但是我真的需要接受这个并使用 ListAdapter 并从头开始创建一个单独的对话框吗?

对于选择应用程序,是的。

没有使用此快捷选择菜单的常用方法吗?

该“快捷方式选择菜单”没有选择应用程序。它正在选择一项活动,可能正在使用ACTION_PICK_ACTIVITY.

于 2011-05-20T10:24:39.873 回答
1

对于那些感兴趣的人,这是我最终完成它的方式:

当您创建 Intent mainIntent(在下面的代码中)并使用 ACTION_MAIN 和 addCategory CATEGORY_LAUNCHER 时,您可以将其添加为 pickIntent 的 EXTRA。这样做会缩小选择器菜单以仅显示已安装的应用程序。

下面是一些代码来获得一个简单的启动器按钮:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //rename R.id.plusbutton to match up with your button in xml
    Button plusButton = (Button)findViewById(R.id.plusbutton);

    plusButton.setOnClickListener(new View.OnClickListener() {          

    @Override
    public void onClick(View view) {
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);            
        Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
        pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);   
        int requestCode = 1;
        //rename Main to your class or activity
        Main.this.startActivityForResult(pickIntent, requestCode);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (intent != null)
        startActivity(intent);
}
于 2011-05-23T04:53:50.637 回答