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

このコードは機能します。テストする適切なアプリとOSを見つけるだけです。

    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 OSにそのような機能がないため、過去の画像コピーは不可能です。上記のコードは、OSが変更されたいくつかの場合にのみ機能します。たとえば、SamsungNoteタブレットでは機能します。そして、PolarisOfficeで画像を貼り付けることができます。ただし、Polarisは、Samsungが提供する非表示のAPIを使用しています。これは、そのアプリにデバイスが付属しているためです。

于 2013-04-26T11:18:17.947 に答える
0

これが私の解決策です。サムスンギャラクシーノート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 に答える