Как сделать настраиваемую кнопку для запуска приложений? - PullRequest
3 голосов
/ 20 мая 2011

Я пытаюсь добавить кнопку в свое приложение. При нажатии я хотел бы запустить диалоговое окно выбора, которое показывает все ярлыки или установленные приложения. Выбор должен навсегда установить кнопку для запуска этого приложения.

Я понимаю, как использовать packagemanager для получения списка установленных приложений:

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

но действительно ли мне нужно взять это и использовать ListAdapter и создать отдельный диалог с нуля?

Мне кажется, что я видел это меню выбора в других приложениях несколько раз (например, любое приложение запуска, когда вы добавляете ярлык, или в приложении Google Car Home, когда вы добавляете новый ярлык). Нет ли какого-либо стандартного способа использовать это меню быстрого доступа?

Я искал эти форумы и не могу найти иначе. Любая помощь будет высоко ценится. Спасибо.

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Для тех, кто заинтересован, вот как я в конце концов достиг этого:

Когда вы создаете Intent mainIntent (в коде ниже) и используете ACTION_MAIN и addCategory CATEGORY_LAUNCHER, вы можете добавить его как EXTRA для pickIntent.Это сужает меню выбора и отображает только установленные приложения.

Вот код для запуска простой кнопки запуска:

@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);
}
1 голос
/ 20 мая 2011

но мне действительно нужно взять это и использовать ListAdapter и создать отдельный диалог с нуля?

Для выбора приложения, да.

Нет ли на складе способа использовать это меню быстрого доступа?

То, что "меню выбора ярлыка" не выбирает приложение. Это выбор деятельности, вероятно, с использованием ACTION_PICK_ACTIVITY.

...