我想使用剪贴板管理器将图像从我的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);
我试图在支持图片粘贴的应用程序中过去,所以我猜问题是“复制”。 任何答案和建议将不胜感激。
答案 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();