我想在用户将某些内容复制到剪贴板时执行某些操作,并且我知道ClipboardManager
中有一个事件,如下所示:
class ClipboardListener implements ClipboardManager.OnPrimaryClipChangedListener
{
public void onPrimaryClipChanged()
{
// use getPrimaryClip() to get the data or simply display a toast
}
}
ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener( new ClipboardListener() );
但我想知道如何在用户关闭我的应用程序时收到通知,然后用户将其他应用程序中的内容复制到剪贴板。
我应该使用Service
,如果是这样的话?
答案 0 :(得分:4)
首先,您需要将这些权限添加到AndroidManifest:
<uses-permission android:name="android.permission.GET_CLIPS" />
<uses-permission android:name="android.permission.READ_CLIPS" />
<uses-permission android:name="android.permission.WRITE_CLIPS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
然后,您需要添加如下服务:
public class Clipboard extends Service {
private ClipboardManager mCM;
IBinder mBinder;
int mStartMode;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mCM = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
mCM.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
String newClip = mCM.getText().toString();
Toast.makeText(getApplicationContext(), newClip.toString(), Toast.LENGTH_LONG).show();
Log.i("LOG", newClip.toString() + "");
}
});
return mStartMode;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
在AndroidManifest中添加此服务:
<service android:name=".Clipboard" />
在MainActivity启动服务
startService(new Intent(this, Clipboard.class));