Android поделиться текстом всегда запрашивать приложение - PullRequest
1 голос
/ 19 сентября 2019

Я использую этот код для обмена текстом из своего приложения:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, GetTxt());
intent.setType("text/plain");
startActivityForResult(intent, REQUEST_SEND_MSG);

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

Так как же заставить пользователя всегда выбирать приложение?На API 29 «PackageManager.clearPackagePreferredActivities» устарела, так что я могу использовать?

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Вы можете попробовать с помощью выбора намерений, как это:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, GetTxt());
intent.setType("text/plain");
startActivityForResult(intent, REQUEST_SEND_MSG);

    Intent openInChooser = Intent.createChooser(intent, "Share");
    startActivityForResult(openInChooser, REQUEST_SEND_MSG);

Это универсально, так что вы можете поделиться своим текстом с тем, что вы хотите

0 голосов
/ 19 сентября 2019

Ваше приложение не может удалить предпочтительные действия из других приложений, которые установлены пользователем как действия по умолчанию.Вплоть до API 28 вы могли использовать clearPackagePreferredActivities для отмены действий по умолчанию, если они принадлежали вашему приложению, но теперь с API 29 это не рекомендуется.

Этот метод устарел на уровне API 29. Эта функция больше ничего не делает.Платформа несет ответственность за назначение предпочтительных действий, и это не может быть изменено напрямую.Чтобы определить действия, разрешенные платформой, используйте resolActivity (Intent, int) или queryIntentActivities (Intent, int).

Вместо этого вашему приложению предлагается запрашивать доступность ролей с помощью Role Manager .

Чтобы настроить приложение так, чтобы оно отвечало за определенную роль, и чтобы проверить текущих владельцев ролей, см. RoleManager.

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

...