Android一键清除其他应用缓存数据,有没有什么好方法?【已解决】

2023-10-27

...  [复制链接]

 

发表于 2013-5-13 10:41 | 来自  51CTO网页

[只看他] 楼主

 

想做个功能,清除一个应用下面的所有数据,比如sharedPreference和数据库等等。请问大家有没有什么想法呢?



-----------------------------------------  分割线 , 因为下面是解决方法 ---------------------------------------------------------------------------------------

如果一个应用想去清除其他应用的缓存数据,今天找了个方法,如下:
1. 得到ActivityManager对象
因为ActivityManager.java有个方法clearApplicationUserData(),这个方法就是用来清除其他应用的数据的复制内容到剪贴板

代码:

/**
     * @hide
     */
    public boolean clearApplicationUserData(String packageName, IPackageDataObserver observer) {
        try {
            return ActivityManagerNative.getDefault().clearApplicationUserData(packageName, 
                    observer, Binder.getOrigCallingUser());
        } catch (RemoteException e) {
            return false;
        }
    }
得到ActivityManager对象:复制内容到剪贴板

代码:

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 2. 通过反射调用am.clearApplicationUserData()方法
看到这里,大家肯定会觉得这个东西有点恐怖,因为随便一个应该就把别人应用程序的缓存清除了,那是多么可怕的事情!
所以,google就把这个方法设置成隐藏的,如上@hide, 也就是sdk开发,是调用不到这个方法的。那么我们怎么调用呢?嗯,用反射。。。如:复制内容到剪贴板

代码:

for (int i = 0; i < methods.length; i++) {
                    Log.d("Sandy", "i: " + i + " method name: " + methods);
                    if ("clearApplicationUserData".equals(methods.getName())){  
                        try {
                            methods.invoke(am, "com.android.providers.contacts", new ClearUserDataObserver());
                        } catch (Exception e) {
                            Log.d("Sandy", "", e);
                        } 
                    }
                }
复制内容到剪贴板

代码:

class ClearUserDataObserver extends IPackageDataObserver.Stub {
           public void onRemoveCompleted(final String packageName, final boolean succeeded) {
//               final Message msg = mHandler.obtainMessage(CLEAR_USER_DATA);
//               msg.arg1 = succeeded?OP_SUCCESSFUL:OP_FAILED;
//               mHandler.sendMessage(msg);
            }
        }
首先拿到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文件里面配置这个权限,如下:复制内容到剪贴板

代码:

<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" /> 4.  设置应用程序的系统进程权限
是不是这样就ok了呢?还不是的。。 ^_^, 我们的应用程序必须具有系统进程权限才可以执行这个操作,怎么办呢?在AndroidManifest.xml里面配置android:sharedUserId,如:复制内容到剪贴板

代码:

android:sharedUserId="android.uid.system" 5.  编写Android.mk文件
修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行, 这一行的意思是调用系统平台的签名

6.  用mm命令来编译我们的应用程序,这样,我们的应用程序就可以清除联系人的数据了。

这种方法的缺陷:
1.  由于调用LOCAL_CERTIFICATE := platform来编译应用程序,所以我们的应用程序就和系统签名绑定在一起了,就是基本上这个应用程序只能在你的系统上进行安装,别人的手机是装不了的。。这个也是为了安全考虑。
不然别人做个应用程序,然后啪啪啪就把你的应用程序的数据清空了,那真的是可怕的事情了。。

下面是一个链接,大家可以参考:
http://elsila.blog.163.com/blog/static/173197158201101472354986/

写的很匆忙,大家将就着看吧。。。

本帖最近评分记录
  • 四海轩 无忧币 +20 精典原创 2013-5-15 12:42


 

本帖最后由 rongwei84n 于 2013-5-13 17:10 编辑

更多1

 

楼主关注

  • 在网络环境中下载读取一个文件urlConnection.getInputStream报错!
  • Android自动接听&挂断电话(包含怎么应对4.1以上版本的权限检查)
  • android-serialport-api组建起来 运行问题
  • 转给初学者:Android的版本和API的对应关系
  • 问题请教
  • Android发送HTTP请求的两个方式的区别

版主推荐

  • 请大神们帮帮忙,看一下哪儿错了,总是setOnClickListener报错
  • Android Activity定制需要的Title
  • AIDL介绍和实例讲解
  • 【分享与求教】Android-Apk实现静默安装
  • 【求破】ListView的item无法点击,按钮可以点击
  • 在Service如何保存数据?

51CTO学院300课程免费在线看 | 下载年末活动送豪礼 | 工信部弱电项目经理资格认证

 

 
rongwei84n 

版主 

帖子

4231 

精华

无忧币

7650

 

  • 发短消息
  • 家园好友
  • 他的博客
  • 他的资源

发表于 2013-5-13 17:03 | 来自  51CTO网页

[只看他] 沙发

 

终于解决了。。 ;P1 ;P1



 

<strong>欢迎来到Sandy安卓应用开发视频讲解 http://down.51cto.com/473181/up <strong>

51CTO学院300课程免费在线看 | 下载年末活动送豪礼 | 工信部弱电项目经理资格认证

 

 
rongwei84n 

版主 

帖子

4231 

精华

无忧币

7650

 

  • 发短消息
  • 家园好友
  • 他的博客
  • 他的资源

发表于 2013-5-14 09:42 | 来自  51CTO网页

[只看他] 板凳

 

其实这个功能也是蛮不错的,和setting里面的应用管理有点像。。 ;P1



 

<strong>欢迎来到Sandy安卓应用开发视频讲解 http://down.51cto.com/473181/up <strong>

51CTO学院300课程免费在线看 | 下载年末活动送豪礼 | 工信部弱电项目经理资格认证

 

 
四海轩 

版主 

帖子

547 

精华

无忧币

4964

 

  • 发短消息
  • 家园好友
  • 他的博客
  • 他的资源

发表于 2013-5-15 12:41 | 来自  51CTO网页

[只看他] 地板

 

引用:

原帖由 rongwei84n 于 2013-5-13 10:41 发表 
想做个功能,清除一个应用下面的所有数据,比如sharedPreference和数据库等等。请问大家有没有什么想法呢?



-----------------------------------------  分割线 , 因为下面是解决方法 -------------------------------- ...
我也碰到过需要调用>

 

51CTO学院300课程免费在线看 | 下载年末活动送豪礼 | 工信部弱电项目经理资格认证

 

 
rongwei84n 

版主 

帖子

4231 

精华

无忧币

7650

 

  • 发短消息
  • 家园好友
  • 他的博客
  • 他的资源

发表于 2013-5-15 13:22 | 来自  51CTO网页

[只看他] 5#

 

引用:

原帖由 四海轩 于 2013-5-15 12:41 发表 

我也碰到过需要调用 sdk中 隐藏的接口,不知道怎弄,原来可以这样操作!
嗯~~, 可以用反射。。 其实反射真的用途挺广的。特别是一些框架,比如struts之类的。大量使用反射来实例化程序员配置在xml文件里面的类。 :lol1

 

<strong>欢迎来到Sandy安卓应用开发视频讲解 http://down.51cto.com/473181/up <strong>

51CTO学院300课程免费在线看 | 下载年末活动送豪礼 | 工信部弱电项目经理资格认证

 

 
Kyson 

新新人类 

帖子

精华

无忧币

12

 

  • 发短消息
  • 家园好友
  • 他的博客
  • 他的资源

发表于 2013-7-12 17:24 | 来自  51CTO网页

[只看他] 6#

 

LZ啊,如果我要不绑定系统签名和应用怎么搞?360安全卫士什么的不是可以一键清除缓存的嘛?LZ有思路没?



 

 

 

 
rongwei84n 

版主 

帖子

4231 

精华

无忧币

7650

 

  • 发短消息
  • 家园好友
  • 他的博客
  • 他的资源

发表于 2013-7-12 17:34 | 来自  51CTO网页

[只看他] 7#

 

引用:

原帖由 Kyson 于 2013-7-12 17:24 发表 
LZ啊,如果我要不绑定系统签名和应用怎么搞?360安全卫士什么的不是可以一键清除缓存的嘛?LZ有思路没?
如果不用系统签名的话, 要root权限的,也就是两个方面
1。 你的手机是root过的
2. 360得到你的授权可以请求到root权限。。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android一键清除其他应用缓存数据,有没有什么好方法?【已解决】 的相关文章

  • 单击弹出菜单时为什么导航栏出现在全屏应用程序中

    我有一个全屏应用程序 MainActivity java public class MainActivity extends AppCompatActivity TargetApi Build VERSION CODES KITKAT pr
  • Android NDK 中使用“dynamic_cast”时出现“UnsatisfiedLinkError”

    我是 Android 开发新手 我面临下一个问题 当我使用 C 代码时 动态演员 表达方式 不满意的链接错误 当我在模拟器上启动应用程序时出现 但是当我在没有它的情况下运行应用程序时 一切正常 我的意思是 LogCat 没有任何错误 我尝试
  • v7 RecyclerView NullPointerException AccessibilityDelegateCompat.getBridge()

    运行我的 recyclerview 列表片段时出现此错误 java lang NullPointerException Attempt to invoke virtual method java lang Object android su
  • 安卓无法玩ogg

    有人知道这是什么意思吗 ogg使用phonegap is Media播放 它使用MediaPlayer 05 26 15 41 50 007 1160 3631 E AudioFlinger no more track names avai
  • 将正确的上下文传递给 greendao 的 OpenHelper 构造函数

    如果我理解正确的话 在使用数据库时 我必须执行以下操作 DaoMaster OpenHelper helper new DaoMaster OpenHelper this test db null Override public void
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • Android:应用内计费V3超时返回哪个响应码?

    出现网络超时情况时 Google Play 应用内结算服务 ice er V3 将返回哪些响应状态代码 它的所有功能都是统一的吗 我将在这里描述我的发现 我通过拔掉主机插头 在安装了全功能 GP GP Store V3 10 10 GP S
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • 如何防止布局的方向改变,而不是整个屏幕/活动的方向改变

    我需要一个子布局 可以是任何布局 例如FrameLayout or RelativeLayout 忽略方向变化并始终保持横向 但不是它的父级或任何其他兄弟布局 视图 它们应该相应地改变它们的方向 因此 我不能使用setRequestedOr
  • 如何持续更新MPAndroidChart中的Y轴值

    我希望 LineChart 中的轴能够实时调整其最大值和最小值 当新数据的 Y 值增加 正值和负值 时 像 ResetAxisMaxValue 和 ResetAxisMinValue 这样的函数可以很好地工作 但是 一旦信号再次变低 Y 值
  • 如何使用 Firebase UI 在 recyclerView 中显示时从 Firebase 数据库中的子级引用父级

    我目前正在引用 quote text 子项 这些数据显示在recyclerview using firebase用户界面 我想获取 quote text 的父名称 如何获取 quote text 孩子的父母姓名 When user clic
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文

随机推荐

  • 二叉树的遍历和统计二叉树中度为0、度为1、度为2的结点个数

    文章目录 实验五 树的应用 二叉树的遍历 一 实验目的 1 了解二叉树的逻辑结构和物理结构 2 掌握二叉树数据类型定义 3 熟练掌握二叉树在链式存储结构上的遍历操作 二 实验要求 三 实验任务 四 代码如下 五 实验结果图 实验五 树的应用
  • 重构改善既有代码设计----- 在对象之间搬移特性

    在对象之间搬移特性 常常我们只要使用 搬移函数 搬移字段 就可以解决大部分问题了 再使用两个重构手法时 尽量先使用搬移字段 再搬移函数 如果一个类变得没有足够的逻辑 可以考虑把它内联到一个和它关联最强的类中 如果一个类做的太多的事情 不利于
  • 二进制1010个Pycharm快捷键

    咱们写Python代码 至少得有一半是用 Pycharm 吧 这种傻瓜式的IDE学习成本低 不像VIM拿到手摸不着头脑 如果想让工具发挥出极致的效率 快捷键操作是必不可少的 有时候你敲几行代码 点几下鼠标 别人只要一个组合快捷键就能搞定 不
  • 自然语言处理之文本向量化(词袋模型、TF-IDF)

    目录 1 词袋模型 Bag of words 简称 BoW 2 词频向量化 3 TF IDF处理 3 1 TF 3 2 IDF 4 CountVectorizer与TfidfVectorizer的异同 5 sklearn中TfidfTran
  • Linux下安装配置maven

    参考链接 Linux下安装配置maven 配置maven的setting xml Linux下的复制粘贴等操作 一 Linux下安装配置maven 1 安装wget命令 如果需要通过使用wget命令 直接通过网络下载maven安装包时 需要
  • 计算机专业毕业设计题目哪个简单,计算机专业毕业设计题目计算机专业毕业设计的类型...

    不同的学校院系 不同的指导教师对计算机专业毕业设计有不同的指导方法 在计算机系 本科毕业设计通常以下面四种类型 1完成一个不太大的实际项目或在某一个较大的项目中设计并完成一个模块 如应用软件 工具软件或自行设计的板卡 接口等等 然后以工程项
  • Jeesite框架实用 如何实现本公司内数据权限功能使用

    文章目录 前言 一 数据库中创建一张视图表 非常重要 二 创建自己的表 三 使用jeesite导入表 生成代码 四 在此表生成的 service层中 加上过滤 五 在此表生成的 controller层中查看数据处 加上过滤 六 在此表生成的
  • SQL数据分析聚合及练习

    COUNT 不会考虑具有 NULL 值的行 SUM 忽略 NULL 值 最早的订单下于何时 SELECT MIN occurred at FROM orders 尝试执行和第一个问题一样的查询 但是不使用聚合函数 SELECT occurr
  • 基于ICP算法的三维点云数据拼接的MATLAB实现

    基于ICP算法的三维点云数据拼接的MATLAB实现 三维点云数据拼接是计算机视觉领域中的重要研究方向之一 随着三维扫描设备技术的不断发展 获取物体表面信息的三维点云数据已经成为一种常见的手段 但是由于采集时存在众多干扰因素 往往需要将不同位
  • 【华为OD机试真题 python】跳格子2【2023 Q2

    题目描述 跳格子2 小明和朋友玩跳格子游戏 有 n 个连续格子组成的圆圈 每个格子有不同的分数 小朋友可以选择从任意格子起跳 但是不能跳连续的格子 不能回头跳 也不能超过一圈 给定一个代表每个格子得分的非负整数数组 计算能够得到的最高分数
  • node---express框架详解

    一 简介 官方给出的概念 Express是基于Node js 平台 快速 开放 极简的Web开发框架 通俗的理解 Express 的作用和Node js 内置的 http模块类似 是专门用来创建Web服务器的 Express的本质 就是一个
  • VSCode中如何修改代码字体

    通过 File Preferences Settings Text Editor Font Font Family 中 修改对应的字体即可 因为比较喜欢 JetBrains Mono 所以设置的字体是这个 其中Jetbrains Mono字
  • 使用docker-compose与SpringBoot搭建ELK日志分析系统

    使用docker compose与SpringBoot搭建ELK日志分析系统 ELK对应Elasticsearch Logstash Kibana 版本7 17 7 Logstash作为日志采集工具 向Elasticsearch写日志信息
  • linux C之stat函数

    之前写过一篇关于stat命令的博客 介绍了stat命令的使用和输出信息表示 今天又见到了stat函数 因为输出原因 准备整理一下 stat函数介绍 根据 UNIX环境高级编程 中对于stat函数的解释 stat函数和stat命令一样 都是返
  • 插入、希尔、冒泡、快速、选择排序C++实现

    插入 希尔 冒泡 快速 选择排序C 实现 include
  • C语言——ATM系统项目

    实现效果如图 代码如下 include
  • 初学怎么看电路板

    电路板起支撑与固定无件的作用 同时又是各线路间的连线媒介 起到传送电信号重要作用 电路原理图为表达清晰起见 将功能电路集中在一起 而电路板要考虑电流大小 爬电距离 电磁兼容 热能耗 散热方式和外部接插件的位置等问题 需要有电路基础和电磁兼容
  • psi-probe安装手记

    作者 fbysssmsn jameslastchina hotmail com blog blog csdn net fbysss声明 本文由fbysss原创 转载请注明出处关键字 tomcat监控 probe 一 简介 psi probe
  • UML类关系

    UML类关系 OVERVIEW UML类关系 1 继承关系 2 关联关系 单向关联 双向关联 自关联 3 聚合关系 4 组合关系 5 依赖关系 最后总结 1 继承关系 继承也叫作泛化 Generalization 用于描述父子类之间的关系
  • Android一键清除其他应用缓存数据,有没有什么好方法?【已解决】

    复制链接 发表于 2013 5 13 10 41 来自 51CTO网页 只看他 楼主 想做个功能 清除一个应用下面的所有数据 比如sharedPreference和数据库等等 请问大家有没有什么想法呢 分割线 因为下面是解决方法 如果一个应