当用户在 android 中复制内容时如何得到通知?
How to get notified when user copied something in android?
我想在用户将某些内容复制到剪贴板时执行某些操作,并且我知道 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
,如果是哪个?
首先,您需要将这些权限添加到 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));
我想在用户将某些内容复制到剪贴板时执行某些操作,并且我知道 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
,如果是哪个?
首先,您需要将这些权限添加到 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));