如何制作可自定义按钮来启动应用程序?

时间:2011-05-20 08:47:55

标签: android menu selection shortcut package-managers

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

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

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

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

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

我已经搜遍了这些论坛,但却无法找到。任何帮助都感激不尽。谢谢。

2 个答案:

答案 0 :(得分:1)

  

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

选择申请表,是的。

  

是否有使用此快捷方式选择菜单的库存方式?

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

答案 1 :(得分: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);
}