Эмуляция Android не требует никаких разрешений - PullRequest
0 голосов
/ 19 мая 2019

Я изучаю некоторые вещи для курса и эмулирую 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 Ответ

1 голос
/ 20 мая 2019

Существует два способа отправки сообщения:

1. Как и выше, вызовите системную функцию SMS:

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

, так что ваше приложение не должно запрашивать эторазрешение. (аналогично камере)

2.Вызовите системный интерфейс SMS для прямой отправки сообщений:

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

. Таким образом, вы должны запросить SEND_SMS разрешение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...