Android判断程序回到前台并获取剪贴板数据

最近在做一个分享得红包活动,要求监听剪贴板的数据,当剪贴板含有特定的活动信息时,跳转到对应的活动页面。

传统的监听剪贴板数据的方式是在ClipboardManager中添加OnPrimaryClipChangedListener来实现监听剪贴板数据的改动,而我们的场景是用户在社交软件中复制文字,打开我们App的时候跳转指定活动页面,这里可以取个巧,直接在App回到前台的时候去读取剪贴板数据。

判断App回到前台目前有好几种方式,这里有个判断程序是否在后台的库。我选的是通过在Application中注册ActivityLifecycleCallbacks来监听Activity状态来判断程序是否在后台,直接上代码:

// Application onCreate() 中注册
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

            private int activityCount;

            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
            }

            @Override
            public void onActivityStarted(Activity activity) {
                activityCount++;
                
                if (activityCount == 1) { // 应用回到前台
                    // 获取剪贴板数据
                    String content = null;
                    ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                    try {
                        ClipData data = cm.getPrimaryClip();
                        ClipData.Item item = data.getItemAt(0);
                        content = item.getText().toString();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    if (content != null) { 
                        // 执行我们的操作
                        ...
                        // 清除剪贴板
                       ClipData clip = ClipData.newPlainText("", "");
                       cm.setPrimaryClip(clip);
                    }
                }
            }

            @Override
            public void onActivityResumed(Activity activity) {
            }

            @Override
            public void onActivityPaused(Activity activity) {
            }

            @Override
            public void onActivityStopped(Activity activity) {
                activityCount--;
            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }

            @Override
            public void onActivityDestroyed(Activity activity) {
            }
        });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容