android如何監聽粘貼板內容

來源:互聯網
上載者:User
android如何監聽粘貼板內容

最近項目做監聽粘貼板彈窗的功能小記一下。其實思路很簡單,寫一個服務在後台跑,通過ClipboardManager服務來監聽粘貼板。廢話紹少說上代碼:

~~~java
public class PasteCopyService extends Service {
ClipboardManager clipboardManager;

private String Tag = "pastecopy";private WindowManager wm;private Window mWindow;@Overridepublic void onCreate() {    super.onCreate();    BabytreeLog.e(Tag,"onCreate");    clipboardManager =(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);    wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);    final WindowManager.LayoutParams params = new WindowManager.LayoutParams();    params.type =  WindowManager.LayoutParams.TYPE_TOAST;    params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;    params.width = TimeApplication.screenWidth;    params.gravity = Gravity.TOP;    params.height = 200;    params.x = 0;    params.y = 0;    final LayoutInflater mInflater = LayoutInflater.from(this);    final View view = mInflater.inflate(R.layout.window_paste_copy,null);    view.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            if(AvoidLoginUtil.isLogin(PasteCopyService.this)){                Intent intent = new Intent(PasteCopyService.this, MainActivity.class);                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                startActivity(intent);            }            wm.removeView(view);        }    });    clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {        @Override        public void onPrimaryClipChanged() {            wm.addView(view,params);            view.post(new Runnable() {                @Override                public void run() {                }            });            Toast.makeText(PasteCopyService.this,"測試",Toast.LENGTH_SHORT).show();        }    });}@Overridepublic void onDestroy() {    BabytreeLog.e(Tag,"onDestroy");    super.onDestroy();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {    BabytreeLog.e(Tag,"onStartCommand");    return super.onStartCommand(intent, flags, startId);}@Nullable@Overridepublic IBinder onBind(Intent intent) {    return null;}

}
~~~

為了彈窗要在Manifest上加入許可權

~xml

~

這些代碼並不是真正的項目裡的實現的代碼,好多ui,和動畫,還有於業務上有關係的代碼都沒有貼上來。其實並沒有什麼難度,只是一個思路而已。通過ClipboardManager的OnPrimaryClipChangedListener可以監聽到剪貼簿的動作。如果剪貼簿有新的粘貼內容便可以執行onPrimaryClipChanged中的內容。這裡有些細節,WindowManager.LayoutParams.TYPE_TOAST這樣可以避開某些手機的彈出提醒。經過測試如果服務在後台沒有殺死可以成功彈起彈窗在任何介面。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.