使用adb dumpsys 实现手机文本数据的快速交互

需求提出:

在进行调试的时候,需要进行pc与手机间的文本数据交互,比如把pc上的一个比较长的网址字符串发到手机上,或者把手机上的一些字符串发到pc上

已有方案:

1. 把数据保存到文本中,再传送文本,打开文本,获取数据

2. pc和手机上安装im软件进行通信

这些方法可以实现数据的传送,但是,作为追求快速高效与倾向于敲键盘的专业coder,还可以怎样去实现呢?


把pc上的字符数据到手机上,就用现成的adb input 吧

在手机上点击一个输入框,然后进入adb,使用命令input text实现文字输入

$ input text http://blog.csdn.net/aaajj/article/details/52627192

看着刷刷刷的输入效果,挺有意思的,当然,需要注意下手机输入法。


怎样把手机上的字符串传送到pc控制台呢?

可否利用下手机的剪切板呢?


查了下剪切板的使用方法

        ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);  
        String getString = clipboardManager.getPrimaryClip().getItemAt(0).getText().toString(); 

使用了我们熟悉的getSystemService,看来实现读取剪切板字符数据还是有戏的

自然要使用我们的老朋友dumpsys了


查看源码ClipboardManager.java,有

    /**
     * Returns the current primary clip on the clipboard.
     */
    public ClipData getPrimaryClip() {
        try {
            return getService().getPrimaryClip(mContext.getOpPackageName());
        } catch (RemoteException e) {
            return null;
        }
    }

再查看ClipboardService.java

/**
 * Implementation of the clipboard for copy and paste.
 */
public class ClipboardService extends IClipboard.Stub {

看到
IClipboard.Stub

就知道了可以使用dumpsys来进行实现,具体分析将在Binder介绍了进行说明

ClipboardService.java里没有dump方法,不妨碍我们进行验证

$ dumpsys clipboard

没有输出,也没有报错

dumpsys -l 的显示里有clipboard


下面就进行实现,在ClipboardService.java里添加方法

    @Override 
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("Get clipboard:");
        ClipData cData = getClipboard().primaryClip;
        if (cData != null) {
                pw.println("" + cData.getItemAt(0).coerceToText(mContext));
        }
}

以及对应的import

import java.io.FileDescriptor;
import java.io.PrintWriter;

重新编译

连接adb,在手机上复制一段字符串

然后在adb里

$ dumpsys clipboard


就可以显示出手机剪切板的字符串了





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值