Получить и отобразить список установленных программ на Android - PullRequest
0 голосов
/ 17 ноября 2011

В настоящее время я занимаюсь разработкой приложения, которое позволит пользователю выбрать приложение и запустить его позднее (функциональности больше, но это главное, с чем у меня проблема.)

Я ищу способ получить список приложений (установленных пользователем или обновляемых, например, Gmail, GMaps и т. Д.) И добавить его в AlertDialog, аналогично тому, как вы добавляете ярлык на домашний экран ( Длительное нажатие -> Приложения).

Это - нить, которую я использую, с кодом для получения списка нужных мне приложений. Однако, как бы я превратил это в AlertDialog?

Вот код из потока.

public void getApps()
{
    PackageManager pm = getPackageManager();
    List<ApplicationInfo> apps = pm.getInstalledApplications(0);
    List<ApplicationInfo> installedApps = new ArrayList<ApplicationInfo>();

    for(ApplicationInfo app : apps) {
        //checks for flags; if flagged, check if updated system app
        if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) {
            installedApps.add(app);
        //it's a system app, not interested
        } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
            //Discard this one
        //in this case, it should be a user-installed app
        } else {
            installedApps.add(app);
        }
    }
}//end getApps()

А вот код, который я использую для отображения AlertDialog, похожий на тот, который я хочу использовать.

//PseudoCode does not compile
public void displayAppList(View v)
{
    final CharSequence[] items = {getApps()};

    AlertDialog.Builder builder = new AlertDialog.Builder(SchedulerActivity.this);
    builder.setTitle("Choose an App To Launch");
    builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            appChoiceString[count] = items[item];
     Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }
    });

    builder.setPositiveButton("Yes",
     new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int id) {
       Toast.makeText(SchedulerActivity.this, "Success", Toast.LENGTH_SHORT).show();
      }
     });
    builder.setNegativeButton("No",
     new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int id) {
       Toast.makeText(SchedulerActivity.this, "Fail", Toast.LENGTH_SHORT).show();
      }
     });
    AlertDialog alert = builder.create();
    alert.show();
}

Любая помощь в том, чтобы заставить это отображаться должным образом, была бы удивительной.

1 Ответ

3 голосов
/ 17 ноября 2011

Почему бы просто не использовать стандартный намеренный выбор?(См. это ).В противном случае вы, вероятно, захотите объяснить, что не отображается так, как вы хотите, и как вы действительно хотите, чтобы это выглядело подробно.

...