美文网首页Android开发经验谈Android开发Android技术知识
Android判断程序回到前台并获取剪贴板数据

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

作者: fengmlo | 来源:发表于2018-08-20 15:14 被阅读31次

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

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

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

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

    相关文章

      网友评论

        本文标题:Android判断程序回到前台并获取剪贴板数据

        本文链接:https://www.haomeiwen.com/subject/wthliftx.html