【问题标题】:Is there any way to prevent copying data from an Android application?有什么方法可以防止从 Android 应用程序复制数据?
【发布时间】:2021-05-28 05:17:08
【问题描述】:

我想阻止我的 Android 应用程序的用户将数据从我的应用程序复制并粘贴到应用程序本身以外的任何其他位置。鉴于剪贴板是暴露敏感数据的较常见方式之一,我想知道是否有任何方法可以限制剪贴板的范围,使其只能在应用程序中使用?

我已经创建了一个解决方案来防止在应用程序的文本组件(TextView、EditText...)中复制/粘贴,但我正在寻找一种更有效的方法来解决这个问题。我一直在考虑在退出应用程序时清除剪贴板,但我不想这样做,因为用户可能有他/她想要保留在剪贴板中的重要信息。

以前有没有人遇到过类似的情况?您对如何执行此操作有任何想法吗?

谢谢!

【问题讨论】:

  • '防止在应用程序的文本组件(TextView、EditText...)中复制/粘贴'听起来不错..
  • 也许你可以试试这个。 1) 在启动您的应用程序时,从剪贴板获取最近的应用程序并将其存储在共享首选项中。 2)在应用程序退出/或当您的应用程序进入后台时,设置相同的剪贴板
  • @IndraKumarS 有趣的方法。但是剪贴板不仅仅是最后一个条目,它可以包含多个条目。也许如果我可以删除最后一个条目之后的所有条目......我会检查一下,看看它是否有效
  • 如果用户可以将数据复制到剪贴板,那么用户也可以将此数据粘贴到您应用程序的其他应用程序behind the back。用户不必等待应用关闭。
  • "有什么办法限制剪贴板的范围,使其只能在应用程序内使用?" -- 你不能以这种方式控制系统剪贴板。

标签: android clipboard copy-paste


【解决方案1】:

这不是一个完整的解决方案,但您可以将复制和粘贴的使用限制为一次使用。 这样敏感数据就不会残留。

 public Class ClipboardUtils{
        public static clear(Context context){
               ClipboardManager clipBoard = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
               ClipData data = ClipData.newPlainText("", "");
               clipBoard.setPrimaryClip(data);
        }
 }

使用编辑文本,你可以做这样的事情

 EditText et = (EditText) mView.findViewById(R.id.yourEditText);
 et.addTextChangedListener(new TextWatcher() {
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
             if (count > 2)
                ClipboardUtils.clear(getContext());
          }
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
          public void afterTextChanged(Editable s) {}
});

来源

Clearing Clipboard Data in Android

Android intercept paste\copy\cut on editText

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2012-04-09
    • 1970-01-01
    • 2011-04-18
    • 2019-08-09
    相关资源
    最近更新 更多