SDKClipboard类(防复制粘贴)


     为提供更安全的防复制粘贴的解决方案,eSDK引入了安全剪切板。用户使用安全剪切板接口,既能防止内容从沙箱内被拷贝到沙箱外,同时又能让沙箱内的应用互相拷贝粘贴。


SDK提供了两种防止复制粘贴的场景:


场景一:复制的内容粘贴不到外部应用,只能在本应用中互相拷贝



这种场景实现起来比较简单,作用范围也比较广,可对本应用中具备可长按复制粘贴的源生控件起作用(比如EditText、WebView等)。



   实现方法:


在需要防复制粘贴的页面对应的activity中重写onResume()和onPause()方法,并调用sdk中的相关接口。


 如果需要应用中的每个界面都能防复制粘贴,可写一个父类的Activity,在父类的Activity中调用该接口,然后其他Activity继承该父类Activity。

x


  实现原理:


1.       在本应用中将数据拷贝后,在onPause()方法中将系统剪切板中的内容保存后,然后清空系统剪切板中的内容,所以当外部应用拷贝数据时发现没有内容;


2.       回到本应用后,在OnResume()中将保存的数据取出后再放回系统的剪切板上,这样剪切板中的内容可在本应用中随意粘贴。


场景二:复制的内容可再沙箱内的应用互相拷贝粘贴,不能粘贴到其他应用。



  这种场景实现起来相对上一种场景要复杂些,作用范围较小,只能作用在重写复制粘贴的控件上,但是可以实现沙箱内的应用间的数据拷贝,使数据的传输和共享在安全的基础上更加方便。



    实现方法:


1.       在布局中添加一个控件(不一定是SDKEditText,一般的EditText也可以),SDKEditText复制出的内容默认放在安全剪切板,源生的EditText需自行实现该操作。

   


 

2.       监听该控件的长按事件,重写系统的复制粘贴方法,并根据安全剪切板是否有内容

 

    




3.       拷贝数据时将内容复制到安全剪切板上

   


 

4.       获取安全剪切板上的内容

 



  实现原理:


重写系统的复制粘贴方法后,调用sdk中的相关接口,将拷贝出的内容是直接放在安全剪切板上的,而不是存放在系统的剪切板上,同样,在获取内容时也是在安全剪切板上获取的,所以,该功能针对沙箱中有所有调用sdk中防复制粘贴接口实现重写复制粘贴方法的应用中的所有控件。