Android分享文字总是要求申请

Android share text always ask for application

我使用此代码分享来自我的应用程序的文本:

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

出现 activity,我可以在其中选择要共享的应用程序。 我注意到,如果我点击 "Always open with...",我将无法更改它。

那么如何强制用户总是select申请呢? 在 api 29 "PackageManager.clearPackagePreferredActivities" 已弃用,我可以使用什么?

您的应用无法清除其他应用中用户设置为默认活动的首选活动。在 API 28 之前,您可以使用 clearPackagePreferredActivities 取消设置属于您的应用程序的默认活动,但现在 API 29 这已被弃用。

This method was deprecated in API level 29. This function no longer does anything. It is the platform's responsibility to assign preferred activities and this cannot be modified directly. To determine the activities resolved by the platform, use resolveActivity(Intent, int) or queryIntentActivities(Intent, int).

相反,建议您的应用使用 Role Manager.

查询角色可用性

To configure an app to be responsible for a particular role and to check current role holders, see RoleManager.

就是说,还有 this answer 有实现该目的的 hack 方法,但我不知道它是否仍然有效。另外,我想如果它有效,它只会在第一次有效。

您可以尝试使用这样的意图选择器:

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);

它是通用的,因此您可以随心所欲地分享您的文字