我需要一个简单的服务(将在后台运行),当用户从浏览器或短信等中复制任何内容时,会有一个显示该文本的吐司。
例如:
此服务必须在Android 2.1及更高版本上运行。
今天(从上午10:35到现在[晚上11:11])我一直在网上搜索并测试了几个代码,但到目前为止我还没有得出结论。
有些用户在回答此类问题时建议使用(my-clips)项目。我明白了,you can download this。 但是这个项目很复杂,我很困惑。
有人能告诉我一个非常简单的例子吗? 谢谢
修改
toast
,如下所示:You copy this: ...
答案 0 :(得分:10)
我这样做的方式是:
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 :(得分:1)
对于android中的监视器剪贴板,你需要一个监视剪贴板的服务,这个服务应该在manifest中定义。 你的剪贴板服务在这里
和manifest定义在下面
<service
android:name=".service.ClipboardMonitorService"
android:label="Clipboard Monitor"
android:exported="false"/>
答案 2 :(得分:-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));