Android 模拟不需要任何权限

Android emulation isn't requiring any permissions

我正在为一门课程学习一些东西,并且正在模仿 Android 8.1 API 27,但是 运行 出现了一些奇怪的行为。

这是一个简单的应用程序,旨在让用户发送短信,或以不同的方式将其显示在屏幕上 activity。

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 权限。但是,它根本不需要许可。无论我是否打开或关闭权限,该应用程序都能正常运行并打开短信界面。

我不确定这是否是我错误地设置了模拟器或类似的原因,但如果有人能稍微睁开眼睛看看我是如何忽略此权限的,我将非常感激。

提前致谢!

发送消息有两种方式:

1.like你以上,调出系统短信功能:

var intent = new Intent(Intent.ActionSendto, uri);
...
StartActivity(intent);

这样你的应用程序就不需要请求这个权限了。(和Camera一样)

2.Call系统短信接口直接发送消息:

SmsManager sms = SmsManager.Default;
sms.SendTextMessage(...);

这样,你应该请求SEND_SMS权限