2015-04-03 80 views
2

如何从Android删除短信?来自Rad studio的代码。 我可以阅读邮件,获取信息 - 标识信息,地址,正文。 当我按下Button1时,应该删除该消息。但是这没有发生。 Android不会发布任何错误。如何从Android删除短信。 Rad studio

这不起作用。我究竟做错了什么?

procedure TForm1.Button1Click(Sender: TObject); 
var uri_del: Jnet_Uri; 
begin 
if listbox1.ItemIndex>-1 then begin 
timer1.Enabled:=false; 
cursms.close; 
showmessage(sms[listbox1.ItemIndex].body); 
uri_del:= StrToJURI('content://sms/'); 
SharedActivity.getContentResolver.delete(uri_del, StringToJString('_ID=' + sms[listbox1.ItemIndex].smsid), nil); 
showmessage('Delete!'); 
timer1.Tag:=0; 
timer1.Interval:=10; 
timer1.Enabled:=true; 
end; 
end; 

procedure TForm1.FormActivate(Sender: TObject); 
begin 
timer1.Enabled:=true; 
end; 

procedure TForm1.Timer1Timer(Sender: TObject); 
var CallDate: Int64; 
uri: Jnet_Uri; 

id_smsid: integer; 
    id_smssender: integer; 
    id_smsbody: integer; 
begin 
timer1.Enabled:=false; 
if (timer1.Tag=0) then begin 
uri:= StrToJURI('content://sms/'); 
cursms:= SharedActivity.getContentResolver.query(uri, nil, nil, nil, nil); 

if cursms.getCount<>length(sms) then begin 
setlength(sms,0); 
timer1.Tag:=1; 
timer1.Interval:=10; 
listbox1.Clear; 
end; 
end else begin 

if (cursms.getCount > 0) then 
if cursms.getCount>length(sms) then begin 
cursms.moveToNext; 
setlength(sms,length(sms)+1); 

id_smsid:= cursms.getColumnIndex(StringToJstring('_ID')); 
    id_smssender:= cursms.getColumnIndex(StringToJstring('address')); 
    id_smsbody:=cursms.getColumnIndex(StringToJstring('body')); 

sms[length(sms)-1].phone:=JStringToString(cursms.getString(id_smssender)); 
sms[length(sms)-1].body:=JStringToString(cursms.getString(id_smsbody)); 
sms[length(sms)-1].smsid:=JStringToString(cursms.getString(id_smsid)); 

listbox1.Items.Add(sms[length(sms)-1].body); 

end else begin 
cursms.close; 
timer1.Interval:=10000; 
timer1.Tag:=0; 
end; 

end; 
timer1.Enabled:=true; 
end; 
+0

什么版本的Android?在奇巧和稍后访问短信是严格限制。 – 2015-04-03 20:13:21

回答

1

要修改(例如删除短信,创建线程,插入邮件等)需要被设置为设备上的默认短信应用你的应用程序数据库。这个限制适用于KitKat。