您的位置:首页 > 其它

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

2017-02-25 19:12 1741 查看
需求提出:

在进行调试的时候,需要进行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

就可以显示出手机剪切板的字符串了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐