添加read_uri_permissions以在Gluon Project中共享意图

时间:2017-10-25 22:39:06

标签: android gluon gluon-mobile

我正在尝试与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)

0 个答案:

没有答案