【发布时间】:2018-05-14 14:50:02
【问题描述】:
我有一个地理围栏应用程序,它允许用户启用一个选项,以便在他离开设备时向预编程号码发送短信。这发生在前台服务中。
当用户在设置中激活此选项时,我开始请求所需权限的过程:
if (key.equals(getString(R.string.pref_sms_alert)))
{
if (Prefs.getBoolean(R.string.pref_sms_alert, false))
{
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.SEND_SMS}, 1);
}
}
}
和
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
{
switch (requestCode)
{
case 1:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Prefs.put(R.string.pref_sms_alert, true);
}
else
{
Prefs.put(R.string.pref_sms_alert, false);
}
break;
}
}
SMS 在前台服务中通过以下方式发送:
if (Prefs.getBoolean(R.string.pref_sms_alert, false))
{
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(Prefs.getString(R.string.pref_sms_receiver, ""),
null,
getString(R.string.txt_sms_alert),
null, null);
}
这适用于 Android 6+。
当我使用旧版本 (Kitkat) 尝试此操作时,发送 SMS 时会要求用户授予权限。他不能做什么,因为他不在设备旁。
如何在 Android 6 之前授予发送 SMS 的永久权限?
【问题讨论】:
标签: android permissions sms