在Android 12更新后,分享意图未能在三星S10设备中正常工作。该代码在Android版本12以下的设备上可以正常工作,但无法找到过滤掉Android 12的原因。
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
// (Optional) If you want a preview title, set it with Intent.EXTRA_TITLE
sharingIntent.putExtra(Intent.EXTRA_TITLE, str_title);
sharingIntent.putExtra(Intent.EXTRA_TEXT, "https://www.cyranolab.media/msg/?q=507dddd6-8e43-11ec-9d11-061d7e6be791");
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, str_title);
Intent receiver = new Intent(getActivityContext, UserSelectedShareBroadcast.class);
PendingIntent pendingIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
pendingIntent = PendingIntent.getActivity(getActivityContext,
0, receiver, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}else {
pendingIntent = PendingIntent.getActivity(getActivityContext,
0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
}
Intent openInChooser = Intent.createChooser(sharingIntent, "Choose", pendingIntent.getIntentSender());
List<LabeledIntent> intentList = new ArrayList<>();
Intent externalEmailIntent = new Intent(getActivityContext, ExternalEmailShareActivity.class);
externalEmailIntent.putExtra("programId", programId);
externalEmailIntent.putExtra("sharedResourceId", sharedResourceId);
externalEmailIntent.putExtra("INBOX", "Inbox");
intentList.add(new LabeledIntent(externalEmailIntent, "Package Name", "Email to", R.drawable.ic_mail_outline));
// convert intentList to array
LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[0]);
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
int REQUEST_SHARED_URL = 2;
getActivityContext.startActivityForResult(openInChooser, REQUEST_SHARED_URL);
}
我想与其他应用程序共享我的程序。在安卓12更新后,无法共享我的程序。分享意图未打开。
FLAG_IMMUTABLE
或FLAG_MUTABLE
,但您正在抑制警告。 - Per.J