Servicio – escucha del portapapeles android

Necesito un servicio simple (que se ejecutará en segundo plano), cuando el usuario copia algo desde el navegador o sms, etc, habrá un brindis que muestra ese texto.

ejemplo: Introduzca aquí la descripción de la imagen

Este servicio debe ejecutarse en android 2.1 y posteriores.

Hoy (desde las 10:35 hasta la actualidad [11:11 PM]) He estado buscando en Internet y probado varios códigos, pero hasta ahora no he llegado a una conclusión.

Algunos usuarios en respuesta a preguntas como esta sugirieron que el uso del proyecto (mi-clips) . Consigo esto, usted puede descargar esto . Pero este proyecto es complejo y estoy confundido.

¿Alguien puede mostrarme un ejemplo muy simple, por favor? gracias


Editar:

Esta aplicación es simple ejecutar en el sistema operativo de fondo y. Cuando el usuario no abra esta aplicación y copie cualquier texto desde el navegador o sms, etc., esta aplicación estará activa y mostrará un toast como este: You copy this: ...

La forma en que lo hice fue:

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

Hágalo de esta manera sin servicio, agregue a manifiesto o cualquier cosa, abra su aplicación primero, luego ciérrela y copie el texto desde cualquier lugar para copiar y aparecer en su aplicación.

Para el portapapeles del monitor en androide usted necesita un servicio para el portapapeles de la supervisión y este servicio se debe definir en manifiesto. Su servicio de tablilla está aquí

https://github.com/twaddington/Android-Clipboard-Monitor/blob/master/src/com/example/clipboardmonitor/service/ClipboardMonitorService.java

Y manifiesto se define en el siguiente

 <service android:name=".service.ClipboardMonitorService" android:label="Clipboard Monitor" android:exported="false"/> 

Esto es lo que funciona para mí.

En primer lugar, la emisión:

 @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { ComponentName service = context.startService( new Intent(context, ClipboardMonitor.class)); if (service == null) { Log.e("TAG", "Can't start service"); } } else { Log.e("TAG", "Recieved unexpected intent " + intent.toString()); } } 

Y entonces este es el servicio

 private MonitorTask mTask = new MonitorTask(); private ClipboardManager mCM; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { mCM = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); mTask.start(); } @Override public void onDestroy() { mTask.cancel(); } @Override public void onStart(Intent intent, int startId) { } /** * Monitor task: monitor new text clips in global system clipboard and * new image clips in browser download directory */ private class MonitorTask extends Thread { private volatile boolean mKeepRunning = false; private String mOldClip = null; public MonitorTask() { super("ClipboardMonitor"); } /** Cancel task */ public void cancel() { mKeepRunning = false; interrupt(); } @Override public void run() { mKeepRunning = true; while (true) { doTask(); if (!mKeepRunning) { break; } } } private void doTask() { if (mCM.hasText()) { String newClip = mCM.getText().toString(); if (!newClip.equals(mOldClip)) { mOldClip = newClip; // Toast.makeText(getApplicationContext(), "" + newClip.toString(), Toast.LENGTH_SHORT).show(); Log.i("TAG", "new text clip inserted: " + newClip.toString()); } } } 

Además, los permisos:

 <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" /> <service android:name=".ClipboardMonitor" /> <receiver android:name=".ClipboardMonitorStarter"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 

En primer lugar, debe agregar estos permisos a 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" /> 

A continuación, debe agregar un servicio como este:

 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; } } 

Agrega este servicio en AndroidManifest:

  <service android:name=".Clipboard" /> 

Iniciar servicio en MainActivity

  startService(new Intent(this, Clipboard.class)); 
  • Añadir un png al portapapeles en android
  • Borrar Portapapeles en Android
  • Tamaño máximo del Portapapeles de Android
  • Borrar Portapapeles en SGS2 (api 10)
  • Listener para cambiar el contenido del portapapeles?
  • Cortar, copiar y pegar en android
  • Cómo copiar texto a Clip Board en Android?
  • Tratar con android.text.ClipboardManager obsoleto
  • Receptor de difusión de portapapeles android
  • Copiar y pegar imagen en Android usando el Administrador del Portapapeles
  • ¿Por qué mostrar java.lang.ClassCastException: android.text.SpannableString no se puede transmitir a java.lang.String?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.