2016-09-05 8 views
0

ネット上で類似のものを探すことを試みましたが、できませんでした。私が欲しいのは、具体的には、私が作っているアプリではなく、他のアプリに由来するテキストをボタンに貼り付ける機能です。したがって、「Google Chrome」アプリからのテキストをコピーし、通常の長時間タップしてコピーするとします。次に、このアプリケーションを開いてボタンを押すと、クリップボードからテキストがフェッチされ、TextViewにペーストされます。私が見たすべての例は、アプリ内からの情報を格納するオブジェクトとして表示されているので、これはクリップボードマネージャでは不可能であることを理解しています。さまざまなアプリのボタンを使用してクリップボードからテキストを貼り付ける(Android)

答えて

1

いいえ、ClipboardManagerはシステム全体のクリップボードにアクセスできるシステムサービスです。

多くの例がクリップボードへのコピーと貼り付けの両方を示す理由の一部は、その例が自己完結型であるためです。

getSystemService()からClipboardManagerを取得し、現在の内容をgetPrimaryClip()で取得し、ClipDataを使用してください。

たとえば、this sample projectには、drag/drop/の2つのアプリが含まれています。主に、これはAndroid 7.0でのアプリのドラッグアンドドロップ操作を説明するためのものです。しかし、drop/は、それがUriを持っている場合、私は、クリップボード上にあるものは何でもつかむと、(関連するキーボードショートカットを持つ)「貼り付け」アクションバーのアイテムを、サポートしている、それを使用する:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId()==R.id.paste) { 
     boolean handled=false; 

     ClipData clip= 
     getSystemService(ClipboardManager.class) 
      .getPrimaryClip(); 

     if (clip!=null) { 
     ClipData.Item clipItem=clip.getItemAt(0); 

     if (clipItem!=null) { 
      imageUri=clipItem.getUri(); 

      if (imageUri!=null) { 
      showThumbnail(); 
      handled=true; 
      } 
     } 
     } 

     if (!handled) { 
     Toast 
      .makeText(this, "Could not paste an image!", Toast.LENGTH_LONG) 
      .show(); 
     } 

     return(handled); 
    } 

    return(super.onOptionsItemSelected(item)); 
    } 

この中に何のコードはありませんアプリにクリップボードにアイテムを入れることができますが、関連するdrag/アプリにはコードがあります。

0

私は何を達成したいことは、このオープンソースライブラリで利用可能だと思う:https://github.com/heruoxin/Clip-Stack

アイデアは(あなたのケースで浮動を実行している間、それは自身の内部データベースにクリップボードのエントリを追跡していることですボタン)サービスを選択し、貼り付けます。

+1

OPは、特にアプリケーション間のコピーと貼り付けを求めています。 – CommonsWare

+0

私は悪いと思っていました。私はOPで、クリップボードの内容を追跡しているグローバルコピー&ペーストソリューションが必要だと思っていました。 –

関連する問題