Android剪贴板用法详解
本文实例详述了Android剪贴板的用法,分享给大家供大家参考。具体方法分析如下:
这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管是安卓设备还是PC机,复制粘贴在同一时间里只能用于一个对象上,整通俗点就是:PC机上,不可能同时从C盘复制,又从D盘复制就行了,具体的看代码,很简单,直接上代码:
packagecom.xiaoma.clipboard.demo; importandroid.app.Activity; importandroid.content.ClipData; importandroid.content.ClipData.Item; importandroid.content.ClipDescription; importandroid.content.ClipboardManager; importandroid.content.ContentResolver; importandroid.content.Intent; importandroid.database.Cursor; importandroid.net.Uri; importandroid.os.Bundle; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.Toast; /** *@Title:ClipBoardDemoActivity.java *@Packagecom.xiaoma.clipboard.demo *@Description:剪贴板学习 *@authorMZH */ publicclassClipBoardDemoActivityextendsActivityimplementsOnClickListener{ privateButtonput=null; privateButtonget=null; privateClipboardManagerclipboard=null; privatestaticfinalStringCONTACTS="content://com.example.contacts"; privateStringCOPY_PATH="/copy"; publicstaticfinalStringMIME_TYPE_CONTACT="vnd.android.cursor.item/vnd.xiaoma.contact"; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } /** *初始化方法实现 */ privatevoidinit(){ put=(Button)findViewById(R.id.button1); put.setOnClickListener(this); get=(Button)findViewById(R.id.button2); get.setOnClickListener(this); } /** *监听实现 */ @Override publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.button1: put(); break; caseR.id.button2: get(); break; default: break; } } /** *往Clip中放入数据 */ privatevoidput(){ /** *往ClipboardManager中可放的数据类型有三种: *因为大家都知道,就算是电脑,Ctrl+c也不可能在同一时间里即 *从C盘剪贴,又从D般剪贴,所以小马只写一种简单的信息进去, *另外两种写在注释中 //类型一:text clipboard=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE); ClipDatatextCd=ClipData.newPlainText("kkk","WaHouHou!Clip...."); clipboard.setPrimaryClip(textCd); */ /** * //类型二:URI UricopyUri=Uri.parse(CONTACTS+COPY_PATH+"/"+"XiaoMa"); ClipDataclipUri=ClipData.newUri(getContentResolver(),"URI",copyUri); clipboard.setPrimaryClip(clipUri); * */ //类型三:Intent //试下在Intent剪贴时使用Bundle传值进去 clipboard=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE); IntentappIntent=newIntent(); Bundlebundle=newBundle(); bundle.putInt("xiaoma",3344258); bundle.putInt("yatou",3344179); appIntent.putExtra("XiaoMaGuo",bundle); appIntent.setClass(ClipBoardDemoActivity.this,ReceiverClip.class); ClipDataclipIntent=ClipData.newIntent("Intent",appIntent); clipboard.setPrimaryClip(clipIntent); } /** *从Clip中取数据 */ privatevoidget(){ clipboard=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE); Itemitem=null; //无数据时直接返回 if(!clipboard.hasPrimaryClip()){ Toast.makeText(getApplicationContext(),"剪贴板中无数据",Toast.LENGTH_SHORT).show(); return; } //如果是文本信息 if(clipboard.getPrimaryClipDescription().hasMimeType( ClipDescription.MIMETYPE_TEXT_PLAIN)){ ClipDatacdText=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 }elseif(clipboard.getPrimaryClipDescription().hasMimeType( ClipDescription.MIMETYPE_TEXT_INTENT)){ //此处是INTENT item=clipboard.getPrimaryClip().getItemAt(0); Intentintent=item.getIntent(); startActivity(intent); //........ //如果是URI }elseif(clipboard.getPrimaryClipDescription().hasMimeType( ClipDescription.MIMETYPE_TEXT_URILIST)){ //此处是URI内容www.nhooo.com ContentResolvercr=getContentResolver(); ClipDatacdUri=clipboard.getPrimaryClip(); item=cdUri.getItemAt(0); Uriuri=item.getUri(); if(uri!=null){ StringmimeType=cr.getType(uri); if(mimeType!=null){ if(mimeType.equals(MIME_TYPE_CONTACT)){ CursorpasteCursor=cr.query(uri,null,null,null,null); if(pasteCursor!=null){ if(pasteCursor.moveToFirst()){ //此处对数据进行操作就可以了,前提是有权限 } } pasteCursor.close(); } } } } } }
下面是用来接收Intent传递的值,临时的一个Activity,代码更简单:
packagecom.xiaoma.clipboard.demo; importandroid.app.Activity; importandroid.content.Intent; importandroid.os.Bundle; importandroid.view.TextureView; importandroid.widget.TextView; /** *@Title:ReceiverClip.java *@Packagecom.xiaoma.clipboard.demo *@Description:临时用来接收下从Clip传过来的Intent值 *@authorMZH */ publicclassReceiverClipextendsActivity{ privateTextViewtv1; privateTextViewtv2; @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.main2); init(); } privatevoidinit(){ tv1=(TextView)findViewById(R.id.xiaoma); tv2=(TextView)findViewById(R.id.yatou); Intentintent=getIntent(); Bundleb=intent.getBundleExtra("XiaoMaGuo"); if(b!=null){ intxiaoma=b.getInt("xiaoma"); intyatou=b.getInt("yatou"); if(!"".equals(String.valueOf(xiaoma))&&!"".equals(String.valueOf(yatou))){ tv1.setText(String.valueOf(xiaoma)); tv2.setText(String.valueOf(yatou)); } } } }
全局配置文件里面没什么,如下:
<?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="" package="com.xiaoma.clipboard.demo" android:versionCode="1" android:versionName="1.0"> <uses-sdkandroid:minSdkVersion="14"/> <application android:icon="@drawable/guoguo" android:label="@string/app_name"> <activity android:name=".ClipBoardDemoActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activityandroid:name=".ReceiverClip"></activity> </application> </manifest>
希望本文所述对大家的Android程序设计有所帮助。