我想在我的应用程序中添加一个按钮。单击时,我想启动一个选择对话框,显示所有快捷方式或已安装的应用程序。选择一个应永久设置按钮以启动该应用程序。
我了解如何使用packagemanager获取已安装应用程序的列表:
PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
但是我真的需要这个并使用ListAdapter并从头开始创建一个单独的对话框吗?
我觉得我已多次在其他应用中看到此选择菜单(例如,当您添加快捷方式时,任何启动器应用,或者当您添加新快捷方式时,在Google的Car Home应用中)。有没有库存方式来使用此快捷方式选择菜单?
我已经搜遍了这些论坛,但却无法找到。任何帮助都感激不尽。谢谢。
答案 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);
}