android 粘貼板的詳解

來源:互聯網
上載者:User

粘貼板是什麼我就不多說了。這裡只說一下最簡單的應用,粘貼一般文字。

前段時間忙著學東西做東西,這幾天小馬有時間就拿來學習下官方的文檔,裡面好東西太多了,今天看到了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));            }         }    } }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.