android.content.ClipboardManager#addPrimaryClipChangedListener ( )源码实例Demo

下面列出了android.content.ClipboardManager#addPrimaryClipChangedListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: BigBang   文件: BigBangService.java
/**
 * 监听剪切板
 */
private void listenClipboard() {
    final ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
    clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            if (BigBangActivity.isShowing) {
                //是BigBang复制的,复制结束了就发广播关闭
                sendBroadcast(new Intent(Constant.FINISH_BIGBANG_ACTIVITY));
            } else {
                Intent intent = new Intent(getApplication(), BigBangActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra(Constant.CLIPBOARD_TEXT, clipboard.getText().toString());
                startActivity(intent);
            }
        }
    });
}
 
源代码2 项目: Clip-Stack   文件: CBWatcherService.java
@Override
public void onCreate() {
    Log.v(MyUtil.PACKAGE_NAME, "onCreate CBService");
    mContext = this;
    mHandler = new Handler();
    preference = PreferenceManager.getDefaultSharedPreferences(this);
    readPreference();
    notificationManager = NotificationManagerCompat.from(this);
    db = Storage.getInstance(this.getBaseContext());
    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    clipboardManager.addPrimaryClipChangedListener(listener);
    if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        Log.w(MyUtil.PACKAGE_NAME, "Not support JobScheduler");
    } else {
        bindJobScheduler();
    }
    super.onCreate();
}
 
源代码3 项目: multi-copy   文件: TextCaptureService.java
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    if (textCapture_LOG)
    Log.d(TAG, "onStartCommand: ");
    toggleService = true;
    final ArrayList<String> copiedDataArray = new ArrayList<>();


        clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
            @Override
            public void onPrimaryClipChanged() {
                if (textCapture_LOG)
                Log.d(TAG, "onPrimaryClipChanged: before changing");
                if(toggleService) {
                    if (textCapture_LOG)
                    Log.d(TAG, "onPrimaryClipChanged: ");
                    final ClipData clipData = clipboardManager.getPrimaryClip();
                    if (clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)
                            || clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML)
                            || clipData.getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_INTENT)) {
                        ClipData.Item item = clipData.getItemAt(0);
                        String thisText = item.getText().toString();
                        String sb = "";
                        copiedDataArray.add(thisText);
                        for (String text : copiedDataArray) {
                            sb += text + "\n";
                        }

                        ClipData copiedClip = ClipData.newPlainText("copiedClip", sb);
                        clipboardManager.removePrimaryClipChangedListener(this);
                        clipboardManager.setPrimaryClip(copiedClip);
                        clipboardManager.addPrimaryClipChangedListener(this);
                        Toast.makeText(TextCaptureService.this, "Multi Copied", Toast.LENGTH_SHORT).show();
                    }
                }else{
                    Toast.makeText(TextCaptureService.this, "only text is allowed", Toast.LENGTH_SHORT).show();
                }
            }
        });

    return super.onStartCommand(intent, flags, startId);
}
 
private void readyClipboard(ClipboardManager.OnPrimaryClipChangedListener listener) {
    ClipboardManager clipboardManager = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
    if (null != mPrimaryClipChangedListener) {
        clipboardManager.removePrimaryClipChangedListener(mPrimaryClipChangedListener);
    }
    mPrimaryClipChangedListener = listener;
    clipboardManager.addPrimaryClipChangedListener(mPrimaryClipChangedListener);
}
 
源代码5 项目: XposedNavigationBar   文件: MyClipBoard.java
/**
 * 开始监听剪贴板
 */
public static void startListenClipboard(final Context context) {

    final ClipboardManager clipboard = (ClipboardManager) context.
            getSystemService(Context.CLIPBOARD_SERVICE);
    clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            //  XpLog.i("onPrimaryClipChanged");
            //获取剪贴板内容,先判断该内容是否为空
            if (clipboard.hasPrimaryClip()) {
                ClipData clipData = clipboard.getPrimaryClip();
                int count = clipData.getItemCount();
                for (int i = 0; i < count; ++i) {

                    ClipData.Item item = clipData.getItemAt(i);
                    CharSequence str = item
                            .coerceToText(context);
                    //因为复制历史记录里面某一条文字到剪贴板的时候,也会导致剪贴板内容变动,此处避免 添加重复内容到剪贴板历史
                    if (!clipboardData.contains(str.toString())) {
                        clipboardData.add(str.toString());
                    }
                }
            }
        }
    });
}
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_clip_board);

    mClipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    findViewById(R.id.copy).setOnClickListener(this);
    findViewById(R.id.paste).setOnClickListener(this);
    copyEdit = findViewById(R.id.copyEdit);
    pasteEdit = findViewById(R.id.pasteEdit);

    mClipboardManager.addPrimaryClipChangedListener(() -> Log.e(TAG, "onPrimaryClipChanged: " ));

}
 
源代码7 项目: Akoi-Translator   文件: TranslateService.java
@Override
public void onCreate() {
	super.onCreate();
	AppLog.i(LOGTAG, "onCreate");
	mClipManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
	mClipManager.addPrimaryClipChangedListener(this);
	mTranslator.registerOnTranslateResultListener(this);
}
 
源代码8 项目: 365browser   文件: Clipboard.java
private Clipboard() {
    mContext = ContextUtils.getApplicationContext();
    mClipboardManager =
            (ClipboardManager) ContextUtils.getApplicationContext().getSystemService(
                    Context.CLIPBOARD_SERVICE);
    mClipboardManager.addPrimaryClipChangedListener(this);
}
 
@Override
public void onCreate() {
    super.onCreate();

    // TODO: Show an ongoing notification when this service is running.
    mHistoryFile = new File(getExternalFilesDir(null), FILENAME);
    mClipboardManager =
            (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    mClipboardManager.addPrimaryClipChangedListener(
            mOnPrimaryClipChangedListener);
}
 
源代码10 项目: movienow   文件: WebViewActivity.java
@Override
protected void processLogic(Bundle savedInstanceState) {
    if (!EventBus.getDefault().isRegistered(this)) {
        EventBus.getDefault().register(this);
    }
    //初始化监听剪贴板
    final ClipboardManager manager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    hasPrimaryClip = new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            long now = System.currentTimeMillis();
            if (now - previousTime < 5000) {
                return;
            }
            previousTime = now;
            if (manager == null || !manager.hasPrimaryClip()) {
                return;
            }
            //如果是文本信息
            if (manager.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)
                    || manager.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML)) {
                ClipData cdText = manager.getPrimaryClip();
                ClipData.Item item = cdText.getItemAt(0);
                //此处是TEXT文本信息
                if (item.getText() != null) {
                    final String t = item.getText().toString();
                    Snackbar.make(webViewT, "剪贴板被使用,是否撤销内容", Snackbar.LENGTH_LONG)
                            .setAction("撤销", new View.OnClickListener() {
                                @Override
                                public void onClick(View view) {
                                    Helper.copyToClipboard(getContext(), text);
                                }
                            }).addCallback(new Snackbar.Callback() {
                        @Override
                        public void onDismissed(Snackbar transientBottomBar, int event) {
                            text = t;
                            super.onDismissed(transientBottomBar, event);
                        }
                    }).show();
                }
            }
        }
    };
    if (manager != null) {
        manager.addPrimaryClipChangedListener(hasPrimaryClip);
    }
}
 
源代码11 项目: ankihelper   文件: CBWatcherService.java
@Override
public void onCreate() {
    pm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    pm.addPrimaryClipChangedListener(listener);
}
 
源代码12 项目: PGPClipper   文件: PGPClipperService.java
private void startClipboardMonitoring() {
    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

    if (clipboardManager != null) {
        clipboardManager.addPrimaryClipChangedListener(onPrimaryClipChangedListener = new ClipboardManager.OnPrimaryClipChangedListener() {
            @Override
            public void onPrimaryClipChanged() {
                Log.d("PGPClipperService", "Clipboard data change detected!");

                // get current clipboard data to string
                String currentData;

                if (clipboardManager.hasPrimaryClip() && Objects.requireNonNull(clipboardManager.getPrimaryClipDescription()).hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {

                    try {
                        currentData = Objects.requireNonNull(clipboardManager.getPrimaryClip()).getItemAt(0).getText().toString();
                    } catch (NullPointerException e) {
                        // should not happen since clipboard contains text, but returned null.
                        // best effort String parsing

                        try {
                            currentData = clipboardManager.getPrimaryClip().getItemAt(0).coerceToText(PGPClipperService.this).toString();

                        } catch (Exception e2) {
                            // best attempt failed... return this method

                            return;
                        }

                    }
                } else {
                    return;
                }

                // tidy once
                currentData = PGPBlockDetector.pgpInputTidy(currentData);

                // check if this contains ASCII armored PGP data

                if (PGPBlockDetector.isBlockPresent(currentData)) {
                    // notify user

                    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

                    Intent intentToLaunchWhenNotificationClicked = new Intent(getApplicationContext(), PGPClipperService.class);
                    intentToLaunchWhenNotificationClicked.putExtra(TRY_DECRYPT, true);
                    intentToLaunchWhenNotificationClicked.putExtra(DATA, currentData);

                    PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intentToLaunchWhenNotificationClicked, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_UPDATE_CURRENT);

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                            CharSequence name = getString(R.string.channel_name);
                            String description = getString(R.string.channel_description);
                            int importance = NotificationManager.IMPORTANCE_HIGH;
                            NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
                            channel.setDescription(description);
                            // Register the channel with the system; you can't change the importance
                            // or other notification behaviors after this
                            notificationManager.createNotificationChannel(channel);
                        }

                    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID)
                            .setSmallIcon(R.drawable.ic_noti)
                            .setTicker(getString(R.string.NotificationTickerText))
                            .setContentTitle(getString(R.string.NotificationTitleText))
                            .setContentText(getString(R.string.NotificationContentText))
                            .setDefaults(Notification.DEFAULT_LIGHTS)
                            .setContentIntent(pendingIntent)
                            .setPriority(NotificationCompat.PRIORITY_MAX)
                            .setWhen(System.currentTimeMillis())
                            .setAutoCancel(true);

                    notificationManager.notify(8591274, notificationBuilder.build());
                }

            }
        });
    }

}