想做个功能,清除一个应用下面的所有数据,比如sharedPreference和数据库等等。请问大家有没有什么想法呢?
----------------------------------------- 分割线 , 因为下面是解决方法 ---------------------------------------------------------------------------------------
如果一个应用想去清除其他应用的缓存数据,今天找了个方法,如下:
1. 得到ActivityManager对象
因为ActivityManager.java有个方法clearApplicationUserData(),这个方法就是用来清除其他应用的数据的 得到ActivityManager对象: 2. 通过反射调用am.clearApplicationUserData()方法
看到这里,大家肯定会觉得这个东西有点恐怖,因为随便一个应该就把别人应用程序的缓存清除了,那是多么可怕的事情!
所以,google就把这个方法设置成隐藏的,如上@hide, 也就是sdk开发,是调用不到这个方法的。那么我们怎么调用呢?嗯,用反射。。。如: 首先拿到am对象的所有方法,然后找到clearApplicationUserData方法,再执行这个方法。我这里要清除的是手机上所有的联系人记录信息("com.android.providers.contacts")。
3. 设置android.permission.CLEAR_APP_USER_DATA权限
嗯,google认为单单把clearApplicationUserData设置成@hide还不够安全,于是它要求执行clearApplicationUserData方法还需要应用具有android.permission.CLEAR_APP_USER_DATA权限。
在AndroidManifest.xml文件里面配置这个权限,如下: 4. 设置应用程序的系统进程权限
是不是这样就ok了呢?还不是的。。 ^_^, 我们的应用程序必须具有系统进程权限才可以执行这个操作,怎么办呢?在AndroidManifest.xml里面配置android:sharedUserId,如: 5. 编写Android.mk文件
修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行, 这一行的意思是调用系统平台的签名
6. 用mm命令来编译我们的应用程序,这样,我们的应用程序就可以清除联系人的数据了。
这种方法的缺陷:
1. 由于调用LOCAL_CERTIFICATE := platform来编译应用程序,所以我们的应用程序就和系统签名绑定在一起了,就是基本上这个应用程序只能在你的系统上进行安装,别人的手机是装不了的。。这个也是为了安全考虑。
不然别人做个应用程序,然后啪啪啪就把你的应用程序的数据清空了,那真的是可怕的事情了。。
下面是一个链接,大家可以参考:
http://elsila.blog.163.com/blog/static/173197158201101472354986/
写的很匆忙,大家将就着看吧。。。
----------------------------------------- 分割线 , 因为下面是解决方法 ---------------------------------------------------------------------------------------
如果一个应用想去清除其他应用的缓存数据,今天找了个方法,如下:
1. 得到ActivityManager对象
因为ActivityManager.java有个方法clearApplicationUserData(),这个方法就是用来清除其他应用的数据的 得到ActivityManager对象: 2. 通过反射调用am.clearApplicationUserData()方法
看到这里,大家肯定会觉得这个东西有点恐怖,因为随便一个应该就把别人应用程序的缓存清除了,那是多么可怕的事情!
所以,google就把这个方法设置成隐藏的,如上@hide, 也就是sdk开发,是调用不到这个方法的。那么我们怎么调用呢?嗯,用反射。。。如: 首先拿到am对象的所有方法,然后找到clearApplicationUserData方法,再执行这个方法。我这里要清除的是手机上所有的联系人记录信息("com.android.providers.contacts")。
3. 设置android.permission.CLEAR_APP_USER_DATA权限
嗯,google认为单单把clearApplicationUserData设置成@hide还不够安全,于是它要求执行clearApplicationUserData方法还需要应用具有android.permission.CLEAR_APP_USER_DATA权限。
在AndroidManifest.xml文件里面配置这个权限,如下: 4. 设置应用程序的系统进程权限
是不是这样就ok了呢?还不是的。。 ^_^, 我们的应用程序必须具有系统进程权限才可以执行这个操作,怎么办呢?在AndroidManifest.xml里面配置android:sharedUserId,如: 5. 编写Android.mk文件
修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行, 这一行的意思是调用系统平台的签名
6. 用mm命令来编译我们的应用程序,这样,我们的应用程序就可以清除联系人的数据了。
这种方法的缺陷:
1. 由于调用LOCAL_CERTIFICATE := platform来编译应用程序,所以我们的应用程序就和系统签名绑定在一起了,就是基本上这个应用程序只能在你的系统上进行安装,别人的手机是装不了的。。这个也是为了安全考虑。
不然别人做个应用程序,然后啪啪啪就把你的应用程序的数据清空了,那真的是可怕的事情了。。
下面是一个链接,大家可以参考:
http://elsila.blog.163.com/blog/static/173197158201101472354986/
写的很匆忙,大家将就着看吧。。。