2013-08-23 58 views
2

我可以在使用保存短信发送

var smsMgr = Android.Telephony.SmsManager.Default; 
smsMgr.SendTextMessage(num, null, txt, null, null); 

发送短信,但发来的短信清单上没有显示此消息。
所以,我想

var values = new ContentValues(); 
values.Put("address", num); 
values.Put("body", txt); 
try 
{ 
    ContentResolver.Insert(Android.Net.Uri.Parse("content://sms/sent"), values); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
} 

有我的代码

[assembly: UsesPermission(Name = "android.permission.SEND_SMS")] 
[assembly: UsesPermission(Name = "android.permission.WRITE_SMS")] 

但每次我得到SecurityException
附注:我的手机没有root 权限
我该怎么办?

+0

请阅读此链接http://stackoverflow.com/questions/3179164/android-sending-an-sms-using-the-outbox我希望它可以帮助你 – MikkaRin

+0

@MikkaRin:谢谢,我会尝试在下一天:D – Marco

回答

2

最后,我发现了如何让短信发送显示选项卡上:我需要

[assembly: UsesPermission(Name = "android.permission.READ_SMS")] 

我不知道如果这是每个手机或Android版本的要求,但添加该权限一切正常工作!

+0

@macro gr8 work +1发现解决方案 –

1
private void addSENTSMS(String address, String message) { 
     try { 
      ContentValues values = new ContentValues(); 
      values.put("address", address); 
      values.put("body", message); 
      getContentResolver() 
        .insert(Uri.parse("content://sms/sent"), values); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

还要确保您使用的是以下权限:

<uses-permission android:name="android.permission.WRITE_SMS" /> 
+0

上述代码在所有版本和API级别都可以正常工作。我已经在我的许多应用程序中使用了以下代码段。 –

+0

我应该有权限,因为我可以在问题中看到我的应用。 'ContentResolver.Insert'和'getContentResolver()。insert'之间有什么区别(你认为)? – Marco

+0

另一个问题:我应该有我的手机的根源来使用它吗?是否有某些原因导致无法授予'WRITE_SMS'权限? 对不起,但我可以在几个小时内测试你的代码,但现在不能... – Marco

0

为什么我编译错误“名称'getContentResolver'在当前上下文中不存在”for getContentResolver.Insert(...)在类MainActivity中实现的方法中:Activity?