11

我想使用剪贴板管理器将图像从我的 android 应用程序复制到另一个 android 应用程序。我进行了很多研究并阅读了本教程,但它没有涵盖图像复制部分。下面的代码复制了图像,但是当我尝试粘贴时,只粘贴了图像的路径。

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

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

4

2 回答 2

3

此代码有效,只需找到合适的应用程序和操作系统来测试它。

    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 操作系统没有这样的功能。上面的代码仅适用于修改操作系统的几种情况。例如,在三星 Note 平板电脑中它可以工作。你可以在北极星办公室过去的图像。但是 Polaris 使用的是三星提供的隐藏 API,因为该应用程序是设备自带的。

于 2013-04-26T11:18:17.947 回答
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();
于 2021-04-04T16:53:26.703 回答