Android一键清除某个应用下的数据

本文介绍了三种清除Android应用数据的方法,包括通过ContactsContract进行删除,遍历删除以及使用隐藏的ActivityManager.clearApplicationUserData方法。重点讲述了如何使用反射调用系统权限的方法来一键清除特定应用,如通讯录数据,并强调了设置系统进程权限和Android.mk文件的重要性。
摘要由CSDN通过智能技术生成

Android一键清除某个应用下的数据,我这里是针对android自带通讯录的数据清除,当初我用了几个方式来清理数据库,当初试用的数据估计有1000个联系人吧,当然跟自己存联系人的方式有关系,我这里用RawContacts表存联系人的基本信息,用data存联系人的详细信息,group是来存分类:

方式1

把ContactsContract.CALLER_IS_SYNCADAPTER设置为true就能删除通讯录里的数据,

      Uri uri = ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
getContentResolver().delete(uri,null,null);
this.getContentResolver().delete(Data.CONTENT_URI.buildUpon()
        .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER,"true").build(), null
        , null);
getContentResolver().delete(ContactsContract.Data.CONTENT_URI,null,null);
      uri = ContactsContract.Groups.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build();
getContentResolver().delete(uri,null,null);

 

花费时间在10秒左右,

方式2:

     Cursor contactsCur = SdmLoginActivity.this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
      while(contactsCur.moveToNext()){ 
       //获取ID
      String rawId = contactsCur.getString(contactsCur.getColumnIndex(ContactsContract.Contacts._ID));
       //删除
      String where = ContactsContract.Data._ID + " =?";
       String[] whereparams = new String[]{rawId};
       getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, where, whereparams);
     }
     if (contactsCur!=null) {
       contactsCur.close();
       contactsCur = null;
      }

耗费时间在20多秒左右,比上一种还慢.

方式3是在这里推荐的,在设置里有一个清除各个应用数据的地方,一般是设置->应用->选中自己的应用->清除数据就能清,该方式的耗费时间普遍在100毫秒左右,用7000多数据测花费时间也在100毫秒左右

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值