(转)Android剪切板传递数据的使用

本文介绍如何在Android应用的不同Activity间通过剪切板技术传递数据。主要讲解了ClipboardManager的使用方法,包括如何设置和获取剪切板数据,并提供了使用ClipData对象代替旧版setText和getText方法的示例。

原地址:http://blog.youkuaiyun.com/u010932017/article/details/50978907


在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据,在Android系统中也存在此技术。

使用剪切板会用到,ClipboardManager对象,这个对用剪切板会用到,ClipboardManager象用来操作剪切板,但是没有提供public的构造函数(单例模式),需要使用Activity.getSystemService(Context.CLIPBOARD_SERVICE)获取该对象。

Android-11(Android 3.0)版本之前,利用剪切板传递数据使用setText()和getText()方法,但是在此版本之后,这两个方法就被弃用,转而使用传递ClipData对象来代替。相对于getText和setText而言,利用ClipData对象来传递数据,更符合面向对象的思想,而且所能传递的数据类型也多样化了。


MainActivity.Java

package com.example.android_intent3;  
  
import android.os.Bundle;  
import android.annotation.SuppressLint;  
import android.app.Activity;  
import android.content.ClipData;  
import android.content.ClipboardManager;  
import android.content.Intent;  
import android.view.Menu;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
@SuppressWarnings("deprecation")  
public class MainActivity extends Activity {  
  
    private Button button;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        button = (Button)findViewById(R.id.button1);  
        button.setOnClickListener(new OnClickListener() {  
              
            @SuppressLint("NewApi")  
            @Override  
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub  
                ClipboardManager clipboarmanager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);  
                String name = "matrix";  
                clipboarmanager.setPrimaryClip(ClipData.newPlainText("data", name));  
                Intent intent = new Intent(MainActivity.this,OtherActivity.class);  
                startActivity(intent);  
            }  
        });  
    }  
  
  
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.main, menu);  
        return true;  
    }  
      
}
OtherActivity.java

package com.example.android_intent3;  
  
import android.annotation.SuppressLint;  
import android.app.Activity;  
import android.content.ClipData;  
import android.content.ClipboardManager;  
import android.os.Bundle;  
import android.widget.TextView;  
  
public class OtherActivity extends Activity {  
  
    private TextView textview;  
    @SuppressLint("NewApi")  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_other);  
        textview = (TextView)findViewById(R.id.textview1);  
        ClipboardManager clipboardmanager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);  
        ClipData clipData =clipboardmanager.getPrimaryClip();  
        String name = clipData.getItemAt(0).getText().toString();  
        textview.setText(name);  
    }  
  
}
使用ClipData的对象来接受ClipboardManager的剪切板数据,可以是多种类型,获取里面的第一个数据clipdata.getItemAt(0)将其显示出即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值