2013-08-18 68 views
3

如何在共享意圖中添加「添加到剪貼板」圖標?如何在共享意圖中添加「添加到剪貼板」

我有這樣的代碼

ClipboardManager copyToClipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("Title", "Text"); 
copyToClipboard.setPrimaryClip(clip); 

Intent clipboardIntent = new Intent(); 
clipboardIntent.putExtra(Intent.EXTRA_TEXT, "Extra Text"); 
clipboardIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 

Intent shareIntent = new Intent(); 
shareIntent .setAction(Intent.ACTION_SEND); 
shareIntent .putExtra(Intent.EXTRA_TEXT, "Text"); 
shareIntent .setType("text/plain"); 

Intent shareChooserIntent = Intent.createChooser(shareIntent, "Share via"); 
shareChooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { clipboardIntent }); 
startActivity(shareChooserIntent); 

但仍然失去了一些東西,圖標犯規秀份額意圖

回答

2

你需要安裝一個實際應用剪貼板它處理ACTION_SEND意圖爲text/plain數據類型。

我已經看到了你談到在之前選擇器顯示的圖標,但我敢肯定它僅出現了,當我有安裝了定製ROM;一個可能有這個用途的系統應用程序。你可以舉一個應用程序的例子,「複製到剪貼板」選項顯示在您的設備上(沒有安裝剪貼板應用程序)?

+0

喜歡的東西http://i.imgur.com/HAGkmia.png(Dropbox的) 我加入的setType和額外ACTION_SEND http://i.imgur.com/0fJ2Ltw.png但我需要更換的第一個圖標與剪貼板圖標+複製到剪貼板 此外,我安裝了CopyToClipboard和工作正常,是否有可能不使用此應用程序來實現它? – A7madev

+0

是的,您可以在沒有CopyToClipboard應用程序的情況下執行此操作,但您必須將Activity添加到可處理此意圖的應用程序中(該活動不必具有UI)。我不確定第二張圖片是什麼;是在你安裝了CTC應用程序之後? – ataulm

+0

是,第二圖像是將CTC之後並且還clipboardIntent.putExtra(Intent.ACTION_SEND) – A7madev

1

要在Share Via菜單中添加選項,
- 首先,您需要創建一個活動來處理將通過Share Via菜單共享的數據。
- 其次將清單文件中的活動與針對首選MIME類型的意圖過濾器相加。
- 第三步在我們在步驟1中創建的活動中添加共享數據處理代碼,在您的案例中編寫代碼以將共享數據添加到剪貼板。
- Fourth Relax。

1.活動代碼

public class CopyToClipboardActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     finish(); 
     String receivedText; 

     if (getIntent() != null && getIntent().getAction().equals(Intent.ACTION_SEND)) { 
      receivedText = getIntent().getStringExtra(Intent.EXTRA_TEXT); 
      Toast.makeText(this, recievedText, Toast.LENGTH_SHORT).show(); 

      //write shared-data handling code below to copy the received text to the clipboard. 

     } 
    } 
} 

2.清單代碼

<activity 
    android:name=".CopyToClipboardActivity" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar"> 
    <intent-filter 
     android:label="Copy to Clipboard"> 
     <action android:name="android.intent.action.SEND"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <data android:mimeType="text/plain"/> 
    </intent-filter> 
</activity> 

現在,當您分享您的應用程序或任何其他應用一些文字,你會看到這個'複製到剪貼板「選項在共享通過菜單。當你點擊它時,它會打開CopyToClipboardActivity,但活動是不可見的,因爲我們在清單文件中使用了'Theme.Translucent.NoTitleBar'主題。所以你不會看到它打開和關閉。該活動將接收文本,現在您可以將該文本添加到剪貼板,或者對活動中收到的文本執行任何想做的事情。