Android模拟不需要任何权限

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (3)

我正在学习一些课程,并且正在模仿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界面。

我不确定这是不是因为我的模拟器设置不正确,或类似的,但如果有人可以稍微睁开我的眼睛,我如何忽略这个许可我会非常感激。

先感谢您!

提问于
用户回答回答于

发送消息有两种方法:

1.如上所述,调用系统短信功能:

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

通过这种方式,您的应用程序不需要请求此权限。(与Camera相同)

2.呼叫系统SMS界面直接发送消息:

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

这样,您应该请求SEND_SMS权限

扫码关注云+社区

领取腾讯云代金券