我正在尝试使用剪贴板管理器制作Android应用
使用此代码-
final ClipboardManager clipboard = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.addPrimaryClipChangedListener( new ClipboardManager.OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
String a = clipboard.getText().toString();
Toast.makeText(getBaseContext(),"Copy:\n"+a,Toast.LENGTH_LONG).show();
}
});
我的应用旨在复制文本并自动发送我的服务器数据库。有什么想法吗?
答案 0 :(得分:0)
首先创建一个即使关闭应用程序也会监听的服务
public class CBWatcherService extends Service {
private final String tag = "[[ClipboardWatcherService]] ";
private OnPrimaryClipChangedListener listener = new OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
performClipboardCheck();
}
};
@Override
public void onCreate() {
((ClipboardManager) getSystemService(CLIPBOARD_SERVICE)).addPrimaryClipChangedListener(listener);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
File folder = new File(ClipboardCacheFolderPath);
// ClipboardCacheFolderPath is a predefined constant with the path
// where the clipboard contents will be written
if (!folder.exists()) { folder.mkdir(); }
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void performClipboardCheck() {
ClipboardManager cb = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
if (cb.hasPrimaryClip()) {
ClipData cd = cb.getPrimaryClip();
if (cd.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
try {
File folder = new File(ClipboardCacheFolderPath);
if (!folder.exists()) { folder.mkdir(); }
Calendar cal = Calendar.getInstance();
String newCachedClip =
cal.get(Calendar.YEAR) + "-" +
cal.get(Calendar.MONTH) + "-" +
cal.get(Calendar.DAY_OF_MONTH) + "-" +
cal.get(Calendar.HOUR_OF_DAY) + "-" +
cal.get(Calendar.MINUTE) + "-" +
cal.get(Calendar.SECOND);
// The name of the file acts as the timestamp (ingenious, uh?)
File file = new File(ClipboardCacheFolderPath + newCachedClip);
file.createNewFile();
BufferedWriter bWriter = new BufferedWriter(new FileWriter(file));
bWriter.write((cd.getItemAt(0).getText()).toString());
bWriter.close();
// Here send the file or the text you want to send to the server or firebase
//callApi()
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
}