如何制作一个应用来复制文本并自动发送到我的联网数据库?

时间:2018-06-20 10:45:35

标签: android clipboardmanager

我正在尝试使用剪贴板管理器制作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();
    }
});

我的应用旨在复制文本并自动发送我的服务器数据库。有什么想法吗?

1 个答案:

答案 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();
            }  
        }
    }
}
}