
adb剪切板数据
【代码】adb剪切板数据。
·
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.text.ClipboardManager;
import android.util.Log;
/*
* Receives broadcast commands and controls clipboard accordingly.
* The broadcast receiver is active only as long as the application, or its service is active.
*
# 写入内容到剪切板
adb shell am broadcast -a clipper.set -f 0x01000000 --es "text" "set content"
adb shell am broadcast -a clipper.set -f 0x01000000 --es "text" "测试信息"
# 获取剪切板内容
adb shell am broadcast -a clipper.get
*/
public class ClipperReceiver extends BroadcastReceiver {
private static String TAG = "调试信息";
public static String ACTION_GET = "clipper.get";
public static String ACTION_GET_SHORT = "get";
public static String ACTION_SET = "clipper.set";
public static String ACTION_SET_SHORT = "set";
public static String EXTRA_TEXT = "text";
private ICallBack iCallBack;
public static boolean isActionGet(final String action) {
return ACTION_GET.equals(action) || ACTION_GET_SHORT.equals(action);
}
public static boolean isActionSet(final String action) {
return ACTION_SET.equals(action) || ACTION_SET_SHORT.equals(action);
}
@Override
public void onReceive(Context context, Intent intent) {
ClipboardManager cb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
Log.i("调试信息", "onReceive: " + intent.getAction());
if (isActionSet(intent.getAction())) {
String text = intent.getStringExtra(EXTRA_TEXT);
Log.d(TAG, "将文本设置为剪贴板 = " + text);
if (text != null) {
cb.setText(text);
setResultCode(Activity.RESULT_OK);
setResultData("文本被复制到剪贴板.");
if (iCallBack != null) {
iCallBack.callBack(text);
}
} else {
setResultCode(Activity.RESULT_CANCELED);
setResultData("没有提供文本. 使用 -e text \"要粘贴的文本\"");
}
} else if (isActionGet(intent.getAction())) {
Log.d(TAG, "从剪贴板获取文本");
CharSequence clip = cb.getText();
if (clip != null) {
Log.d(TAG, String.format("剪贴板 text: %s", clip));
setResultCode(Activity.RESULT_OK);
setResultData(clip.toString());
} else {
setResultCode(Activity.RESULT_CANCELED);
setResultData("");
}
}
}
/**
* 发送广播
*/
public void sendOrderedBroadcast(Context context, String content) {
Intent intent = new Intent();
intent.putExtra(ClipperReceiver.EXTRA_TEXT, content);
intent.setAction(ClipperReceiver.ACTION_GET);
intent.setAction(ClipperReceiver.ACTION_GET_SHORT);
intent.setAction(ClipperReceiver.ACTION_SET);
intent.setAction(ClipperReceiver.ACTION_SET_SHORT);
context.sendOrderedBroadcast(intent, null);
}
/**
* 注册广播
*/
public void registerReceiver(Context context, ICallBack iCallBack) {
this.iCallBack = iCallBack;
IntentFilter filters = new IntentFilter();
filters.addAction(ClipperReceiver.ACTION_GET);
filters.addAction(ClipperReceiver.ACTION_GET_SHORT);
filters.addAction(ClipperReceiver.ACTION_SET);
filters.addAction(ClipperReceiver.ACTION_SET_SHORT);
context.registerReceiver(this, filters);
}
/**
* 剪切回调
*/
public interface ICallBack {
void callBack(String content);
}
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)