1

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

我的应用程序旨在复制文本并自动发送我的服务器数据库。关于创建这个的任何想法?

4

1 回答 1

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();
            }  
        }
    }
}
}
于 2018-06-20T10:59:00.107 回答