Intereting Posts
Android Spinner раскрывает дизайн анимационных материалов В чем разница между настройками «target» в файле «project.properties» и тегом «android: targetSdkVersion» в манифесте? Android: используя getIntent () только внутри onCreate? Получить страну из координат? Установите громкость приложения для Android Изменение размера карты во время выполнения Android L игнорирует фигуры в качестве выделенного фона Создание меню после события с длинным кликом в режиме просмотра списка OnOffsetsChanged, не вызываемый Touchwiz Проверьте, является ли RecyclerView прокручиваемым Ошибка: выполнение команды «муравей», убедитесь, что у вас установлен мувик и добавлен его путь Что произойдет, если оставить «полезную нагрузку разработчика» в качестве пустой биллинга Google Play In-app Лучший способ скрыть клавиатуру на Android GridView внутри ExpandableListView с множественным выбором на Android Неэкспортные действия: запущены на эмуляторах; SecurityException на телефонах

Невозможно сделать startActivity () с Chooser, запрашивающим только один раз за приложение.

Когда вы startActivity() с chooser, Android будет перечислять все приложения, имеющие право обрабатывать ваше Intent вместе с параметрами, чтобы установить это назначение как постоянное, так и однократно (на ICS есть кнопка «Всегда» и «Только один раз», на 2.x Это флажок). Однако для этого кода:

 public class Redirector { public static void showActivityWithChooser( Context context, int chooserLabelTitleId, Intent intent ) { try { context.startActivity( Intent.createChooser( intent, context.getResources().getString( chooserLabelTitleId )) ); } catch( Exception e ) { e.printStackTrace(); } } public static void viewInExternalApplication( Context context, String url ) { Intent intent = new Intent( Intent.ACTION_VIEW ); intent.setData( Uri.parse( url ) ); intent.addFlags( Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET ); showActivityWithChooser( context, R.string.open_chooser_title, intent ); } } 

Я не вижу кнопок «Всегда и только один раз» и не могу сделать мой выбор постоянным (я получил только список приложений и может запускать все, нажав на него). Какое элементарное я упустил из виду, что сделало Android неспособным сделать выбор пользователя постоянным?

См. Фото: левый диалог – это то, что я хотел бы видеть, но теперь это то, что я получаю (разное количество приложений в обоих диалогах не имеет значения):

Введите описание изображения здесь

Solutions Collecting From Web of "Невозможно сделать startActivity () с Chooser, запрашивающим только один раз за приложение."

Для записи – это был слишком интерпретированный тип ошибки (мой). Выбор, который я использовал, – это именно то, что можно увидеть на правильном изображении. И это постоянно появлялось, потому что … я все время звонил. Я неправильно предположил, что chooser предлагает функциональность «Всегда только один раз» и не будет отображаться, если пользователь постучал «Всегда» (и будет отображаться, если он использовал «Just once»). Но это неправильно. Chooser всегда будет отображаться, потому что это его роль – позволить пользователю выбирать. Функциональность «Всегда и только один раз» – это отличная особенность фреймворка Android для startActivity() и startActivityForResult() и будет отображаться автоматически при необходимости – если есть несколько приложений, которые могут обрабатывать определенный Intent, и это Не появится, если вы получили только один или постучали «Всегда» в последний раз. Вы, как разработчик, не должны заботиться.

Поэтому, чтобы исправить это, я просто изменил код viewInExternalApplication() чтобы он просто вызывал startActivity() :

 try { context.startActivity( intent ); } catch (.... ) 

И пусть структура сделает все остальное.