2016-12-01 43 views
-2

使用广播接收器,它可以完美地执行。清单文件读取短信,生成匹配,然后以编程方式删除

+0

还没发布完整的代码..deleteSMS()被调用时,何处? ....它是为了删除所有的短信:) – Gattsu

+0

我已经打电话删除短信方法在后执行方法..是它删除收件箱中的所有短信,其实我认为我需要删除只读短信,但是我不konw我怎么能做到这一点。我也更新它 – Zilu

+0

通过将读取sms正文的值存储到sharedpreference并仅删除处于sharedprefrence中的用户来执行此操作。 – Gattsu

回答

-1

添加权限像

<uses-permission android:name="android.permission.RECEIVE_SMS"android:protectionLevel="signature" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 

然后添加意图过滤器:

<receiver android:name="com.aquadeals.seller.services.SmsReceiver"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
    </intent-filter> 
</receiver> 

获取所有短信:

TelephonyProvider telephonyProvider = new TelephonyProvider(context); 
List<Sms> smses = telephonyProvider.getSms(Filter.ALL).getList(); 

正在删除SMS:

通过将read sms正文的值存储到sharedpreference并仅删除处于sharedprefrence中的人来执行此操作。

Uri inboxUri = Uri.parse("content://sms/inbox"); 
int count = 0; 
Cursor c = getContentResolver().query(inboxUri , null, null, null, null); 
while (c.moveToNext()) { 
    try { 
     // Delete the SMS 
     String pid = c.getString(0); // Get id; 
     String uri = "content://sms/" + pid; 
     // uri. 
     count =getContentResolver().delete(Uri.parse(uri), 
       null, null); 
    } catch (Exception e) { 
     Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); 
    } 

} 

enter image description here

所有的Android内容提供商,如:联系人,通话记录,日历,... Full doc with all options

+0

我已经添加了所有相关的权限读取短信,写短信,internate访问,并访问手机状态.. – Zilu

+0

@Zilu你的brodcast接收器在哪里?发布完整的代码..然后我可以帮助你 – Gattsu