2016-01-06 3 views
3

Я хочу сделать что-то, когда пользователь скопировал что-то в буфер обмена, и я знаю, что это событие в ClipboardManager, как это:Как получить уведомление, когда пользователь скопировал что-то в android?

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

YOU необходимо использовать сервис. –

ответ

2

Во-первых, вам нужно добавить эти разрешения 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)); 
+4

Эти разрешения 'X_CLIPS' нонсенс, их нет в Android. –

+0

сладкий! отлично работает – Eaweb

Смежные вопросы