在android 4.4及以上版本的服务中使用Smsmanager发送短信
我在前台显示的一个服务中工作,我需要在服务类中使用以下代码发送短信在android 4.4及以上版本的服务中使用Smsmanager发送短信,android,Android,我在前台显示的一个服务中工作,我需要在服务类中使用以下代码发送短信 SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNo, null, "text", null, null); 我在android上获得了以下权限:name=“android.permission.SEND_SMS”,但它不工作,没有发送任何消息声明: public static final int PERMISSI
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, "text", null, null);
我在android上获得了以下权限:name=“android.permission.SEND_SMS”,但它不工作,没有发送任何消息声明:
public static final int PERMISSION_CODE_SEND_SMS = 123;
检查是否授予了以下权限:
if (checkSelfPermission(android.Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.SEND_SMS},
PERMISSION_CODE_SEND_SMS);
return;
}
现在处理响应:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_CODE_SEND_SMS: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted send SMS now
} else {
// permission denied ask again
}
return;
}
}
}
在主活动中检查权限
private void checkForSmsPermission() {
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
} else {
// Permission already granted. Enable the SMS button.
permission=1;
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
// For the requestCode, check if permission was granted or not.
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_SEND_SMS: {
if (permissions[0].equalsIgnoreCase(Manifest.permission.SEND_SMS)
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission was granted. Enable sms button.
permission = 1;
} else {
// Permission denied.
permission = 0;
// Disable the sms button.
}
}
}
}
并将权限详细信息作为权限变量(int)通过intent发送到服务类
在服务类中更改权限并发送消息(当按下“发送”按钮时)
您是否拥有运行时权限或仅在清单中添加了权限?仅在清单中如何在服务类的运行时中添加权限?您是否尝试搜索“android发送短信示例”。您的应用在第一次启动时应已请求SMS权限。检查此链接“”ActivityCompat.shouldShowRequestPermissionRegulation()需要活动上下文,但我正在服务中工作,如果我给出“this”,则显示错误。checkSelfPermission()要求api级别23,我至少需要api 19,这与您的最小sdkversion无关。如果目标高于23,则需要使用上述方法在主活动中获取这些权限
checkForSmsPermission();
final Intent intent = new Intent(this, Chat.class);
intent.putExtra("permission",permission);
ContextCompat.startForegroundService(this, intent);
if (permission==1) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} else
{
Toast.makeText(getApplicationContext(),
"SMS faild, please try again.", Toast.LENGTH_LONG).show();
return;
}