使用剪贴板管理器在Android中复制粘贴图像

时间:2013-03-27 11:20:12

标签: android clipboard copy-paste

我想使用剪贴板管理器将图像从我的Android应用程序复制到其他Android应用程序。我已经研究了很多并阅读this教程,但它没有涉及图像复制部分。下面的代码复制图像,但是当我尝试粘贴时,只粘贴图像的路径。

   ContentValues values = new ContentValues(2);
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
    values.put(MediaStore.Images.Media.DATA, "/mnt/sdcard/1.jpg");
    ContentResolver theContent = getContentResolver();
    Uri imageUri = theContent.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    ClipData theClip = ClipData.newUri(getContentResolver(), "Image", imageUri);
    mClipboard.setPrimaryClip(theClip);

我试图在支持图片粘贴的应用程序中过去,所以我猜问题是“复制”。 任何答案和建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

此代码有效,只需找到合适的应用和操作系统进行测试即可。

    ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    ContentValues values = new ContentValues(2);
    values.put(MediaStore.Images.Media.MIME_TYPE, "Image/jpg");
    values.put(MediaStore.Images.Media.DATA, filename.getAbsolutePath());
    ContentResolver theContent = getContentResolver();
    Uri imageUri = theContent.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    ClipData theClip = ClipData.newUri(getContentResolver(), "Image", imageUri);
    mClipboard.setPrimaryClip(theClip);

编辑: 然而,根据我的进一步调查,在大多数Android平台中,图像复制过去是不可能的,因为原始的Android操作系统没有这样的功能。上面的代码仅适用于修改操作系统的几种情况。 例如,在Samsung Note平板电脑中它可以工作。你可以通过Polaris办公室的图像。 但Polaris使用的是三星提供的隐藏API,因为该应用程序附带了设备。

答案 1 :(得分:0)

这是我的解决方案;它适用于三星 Galaxy Note 9:

      Uri uri = FileProvider.getUriForFile(
                this,
                "com.example.android.fileprovider",
                new File(path));
        ClipboardManager mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newUri(getApplicationContext().getContentResolver(), "a Photo", uri);
        mClipboard.setPrimaryClip(clip);
        Toast.makeText(this,"Image copied to clipboard",Toast.LENGTH_SHORT).show();