我正在为一门课程学习一些东西,并且正在模仿Android 8.1 API 27,但遇到了一些奇怪的行为。
这是一个简单的应用程序,其目的只是为了允许用户发送SMS消息,或者在不同的活动中将其显示在屏幕上。
using System;
using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using Android.Content;
using AlertDialog = Android.App.AlertDialog;
namespace EmailSender
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
var sendText = FindViewById<Button>(Resource.Id.sendSMSbutton);
var displayMessage = FindViewById<Button>(Resource.Id.displayMessageButton);
var recipient = FindViewById<EditText>(Resource.Id.email);
var message = FindViewById<EditText>(Resource.Id.message);
sendText.Click += (sender, args) =>
{
string url = string.Format("smsto:{0}", recipient.Text);
var uri = Android.Net.Uri.Parse(url);
var intent = new Intent(Intent.ActionSendto, uri);
intent.PutExtra("sms_body", message.Text);
StartActivity(intent);
};
displayMessage.Click += (sender, args) =>
{
var intent = new Intent(this, typeof(MessageDisplayActivity));
intent.PutExtra("message", message.Text);
StartActivity(intent);
};
}
}
}
我这边的主要问题是,根据我们的文档,应用程序应该需要SEND_SMS权限。然而,它根本不需要权限。不管我打开还是关闭了权限,应用程序都会按预期工作,并打开SMS界面。
我不确定这是不是因为我设置了错误的模拟器,或者类似的原因,但如果有人能让我稍微睁开眼睛看看我是如何忽略这个权限的,我将非常感激。
提前谢谢你!
发布于 2019-05-20 11:24:02
发送消息有两种方式:
1.和上面一样,调用系统SMS函数:
var intent = new Intent(Intent.ActionSendto, uri);
...
StartActivity(intent);
这样你的应用程序就不需要请求这个权限了。(和相机一样)
2.调用系统短信接口直接发送消息:
SmsManager sms = SmsManager.Default;
sms.SendTextMessage(...);
这样,您就应该请求SEND_SMS权限
https://stackoverflow.com/questions/56210153
复制相似问题