我正在尝试与Android意图ACTION_SEND共享图像和文字:
public void shareContent(String text, File image) {
Item clipItem = new ClipData.Item(text);
ClipData clipData = new ClipData(null, new String[] {}, clipItem);
ClipboardManager clipBoardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipBoardManager.setPrimaryClip(clipData);
Uri pictureData = FileProvider.getUriForFile(context,
"mypackage.fileprovider",
image);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_TEXT, text);
shareIntent.putExtra(Intent.EXTRA_STREAM, pictureData);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(Intent.createChooser(shareIntent, "Share content..."));
}
当我向意图添加FLAG_GRANT_READ_URI_PERMISSIONS时,我会在访问相应图片时收到PermissionDenied错误。
我可以使用它:
private void grantPicturePermissions(FXActivity context, Intent shareIntent, Uri pictureData) {
List<ResolveInfo> resInfoList = context.getPackageManager().queryIntentActivities(shareIntent, 0);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
context.grantUriPermission(packageName, pictureData, Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}
但是当我的应用程序恢复时,我必须撤销所有授予的权限。 这是与Gluon有关的问题还是可能是什么原因?
(shareIntent.setClipData(clipData)
也不起作用,这就是为什么我必须使用clipBoardManager.setPrimaryClip(clipData)
)