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权限
我正在为一门课程学习一些东西,并且正在模仿 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权限