Intereting Posts
Firebase Android: событие onDataChange () всегда выполняется в главном потоке пользовательского интерфейса? Как получить статус сообщения для чтения / непрочтения с помощью XMPP Smack API? Сделайте строки равными по высоте по высоте экрана в Android-устройстве Загрузить и установить apk из ссылки Должен ли я генерировать андроид GCM регистрационный идентификатор конкретного приложения или конкретного пользователя? В чем разница между commit () и commitAllowingStateLoss () в фрагментах Android – Запятая как десятичный разделитель на цифровой клавиатуре A-GPS, сброс GPS и sendExtraCommand Почему большие блокировки активности Android не работают? Возможность рисования в качестве фона для CardView Методы отражения не работают при использовании proguard для приложения android В чем разница между logcat и dmesg? Eclipse IDE – графическая компоновка Android и макет XML рядом друг с другом Jarsigner: невозможно подписать jar: java.util.zip.ZipException: недействительный размер записи сжат (ожидается 463, но получил 465 байт) RxJava как шина событий?

Невозможно сделать 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 (.... ) 

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