粘貼板是什麼我就不多說了。這裡只說一下最簡單的應用,粘貼一般文字。
前段時間忙著學東西做東西,這幾天小馬有時間就拿來學習下官方的文檔,裡面好東西太多了,今天看到了Clip,反正不懂,小馬帶著無恥的好奇心,做了個DEMO,先講下注意的一點,就是在使用Android剪貼簿的時候大家只記住一點就行了,不管是安卓裝置還是PC機,複製粘貼在同一時間裡只能用於一個對象上,整通俗點就是:PC機上,不可能同時從C盤複製,又從D盤複製就行了,具體的看代碼,很簡單,直接上代碼:
package com.xiaoma.clipboard.demo; import android.app.Activity; import android.content.ClipData; import android.content.ClipData.Item; import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; /** * @Title: ClipBoardDemoActivity.java * @Package com.xiaoma.clipboard.demo * @Description: 剪貼簿學習 * @author MZH */ public class ClipBoardDemoActivity extends Activity implements OnClickListener{ private Button put = null; private Button get = null; private ClipboardManager clipboard = null; private static final String CONTACTS = "content://com.example.contacts"; private String COPY_PATH = "/copy"; public static final String MIME_TYPE_CONTACT = "vnd.android.cursor.item/vnd.xiaoma.contact"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } /** * 初始化方法實現 */ private void init(){ put = (Button)findViewById(R.id.button1); put.setOnClickListener(this); get = (Button)findViewById(R.id.button2); get.setOnClickListener(this); } /** * 監聽實現 */ @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: put(); break; case R.id.button2: get(); break; default: break; } } /** * 往Clip中放入資料 */ private void put(){ /** * 往ClipboardManager中可放的資料類型有三種: * 因為大家都知道,就算是電腦,Ctrl+c也不可能在同一時間裡即 * 從C盤剪貼,又從D般剪貼,所以小馬唯寫一種簡單的資訊進去, * 另外兩種寫在注釋中 //類型一:text clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); ClipData textCd = ClipData.newPlainText("kkk", "WaHouHou!Clip...."); clipboard.setPrimaryClip(textCd); */ /** * //類型二:URI Uri copyUri = Uri.parse(CONTACTS + COPY_PATH + "/" + "XiaoMa"); ClipData clipUri = ClipData.newUri(getContentResolver(),"URI",copyUri); clipboard.setPrimaryClip(clipUri); * */ //類型三:Intent //試下在Intent剪貼時使用Bundle傳值進去 clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); Intent appIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putInt("xiaoma", 3344258); bundle.putInt("yatou", 3344179); appIntent.putExtra("XiaoMaGuo", bundle); appIntent.setClass(ClipBoardDemoActivity.this, ReceiverClip.class); ClipData clipIntent = ClipData.newIntent("Intent",appIntent); clipboard.setPrimaryClip(clipIntent); } /** * 從Clip中取資料 */ private void get(){ clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); Item item = null; //無資料時直接返回 if(!clipboard.hasPrimaryClip()){ Toast.makeText(getApplicationContext(), "剪貼簿中無資料", Toast.LENGTH_SHORT).show(); return ; } //如果是文本資訊 if (clipboard.getPrimaryClipDescription().hasMimeType( ClipDescription.MIMETYPE_TEXT_PLAIN)) { ClipData cdText = clipboard.getPrimaryClip(); item = cdText.getItemAt(0); //此處是TEXT文本資訊 if(item.getText() == null){ Toast.makeText(getApplicationContext(), "剪貼簿中無內容", Toast.LENGTH_SHORT).show(); return ; }else{ Toast.makeText(getApplicationContext(), item.getText(), Toast.LENGTH_SHORT).show(); } //如果是INTENT } else if (clipboard.getPrimaryClipDescription().hasMimeType( ClipDescription.MIMETYPE_TEXT_INTENT)) {. //此處是INTENT item = clipboard.getPrimaryClip().getItemAt(0); Intent intent = item.getIntent();. startActivity(intent); //........ //如果是URI } else if (clipboard.getPrimaryClipDescription().hasMimeType( ClipDescription.MIMETYPE_TEXT_URILIST)) { //此處是URI內容www.2cto.com ContentResolver cr = getContentResolver(); ClipData cdUri = clipboard.getPrimaryClip(); item = cdUri.getItemAt(0); Uri uri = item.getUri(); if(uri != null){ String mimeType = cr.getType(uri); if (mimeType != null) { if (mimeType.equals(MIME_TYPE_CONTACT)) { Cursor pasteCursor = cr.query(uri, null, null, null, null); if (pasteCursor != null) { if (pasteCursor.moveToFirst()) { //此處對資料進行操作就可以了,前提是有許可權. } } pasteCursor.close(); } } } } } } 下面是用來接收Intent傳遞的值,臨時的一個Activity,代碼更簡單: package com.xiaoma.clipboard.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.TextureView; import android.widget.TextView; /** * @Title: ReceiverClip.java * @Package com.xiaoma.clipboard.demo * @Description:臨時用來接收下從Clip傳過來的Intent值 * @author MZH */ public class ReceiverClip extends Activity { private TextView tv1 ; private TextView tv2 ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main2); init(); } private void init(){ tv1 = (TextView)findViewById(R.id.xiaoma); tv2 = (TextView)findViewById(R.id.yatou); Intent intent = getIntent(); Bundle b =intent.getBundleExtra("XiaoMaGuo"); if(b != null){ int xiaoma = b.getInt("xiaoma"); int yatou = b.getInt("yatou"); if(!"".equals(String.valueOf(xiaoma)) && !"".equals(String.valueOf(yatou))){ tv1.setText(String.valueOf(xiaoma)); tv2.setText(String.valueOf(yatou)); } } } }