[英]android app is not sending sms automatically on real device
我已经开发了一个Android应用程序,该应用程序会自动将SMS自动发送到从中接收SMS的设备。
我的应用程序在模拟器上运行良好,但是当我在真实设备(Android移动设备)上运行它时,它仅接收SMS且不会自动发送响应。
我的代码如下。
public class SMSReciever extends BroadcastReceiver {
String address;
String smsMe = "I Recieved Your SMS";
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
address = smsMessage[n].getOriginatingAddress();
}
Toast toast = Toast.makeText(context,"Received SMS: " +
smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
toast.show();
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(address, null, smsMe, null, null);
}
}
我不知道是什么问题。 以及为什么它不能在真实设备上正常工作。
尝试使用此代码发送短信。
//---sends an SMS---
private void sendSMS(String phoneNumber, String message)
{
PendingIntent pi = PendingIntent.getActivity(this, 0,
new Intent(this, class_name.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, pi, null);
}
}
您是否已添加将SMS发送到AndroidManifest.xml
文件的权限?
<manifest ...>
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
</manifest>
这些是相关的权限 :
SEND_SMS Allows an application to send SMS messages.
BROADCAST_SMS Allows an application to broadcast an SMS receipt notification
READ_SMS Allows an application to read SMS messages.
RECEIVE_SMS Allows an application to monitor incoming SMS messages, to record or perform processing on them.
WRITE_SMS Allows an application to write SMS messages.
正如Dya的答案所建议的那样,使用PendingIntent可以调试sendTextMessage()
- sendTextMessage()
上的操作。
错误代码如下:
Activity.RESULT_OK
Activity.RESULT_ERROR_GENERIC_FAILURE
Activity.RESULT_ERROR_RADIO_OFF
Activity.RESULT_ERROR_NULL_PDU
根据本教程 (以及Mo Al Sh的回答 ),您可以尝试发送短信的另一种内置方式:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content");
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
确保您在manifest.xml中将make输入为;
<receiver android:name=".ListenerSms">
<intent-filter ><action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
您是否检查过短信许可
使用权限android:name =“ android.permission.SEND_SMS”
在清单文件中?
您也可以尝试内置的SMS应用程序:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra(“ sms_body”,“默认内容”);
sendIntent.setType( “vnd.android-DIR / MMS-SMS”);
startActivity(sendIntent);
之所以无法发送消息,是因为您没有包括:
message_sc_address sms.sendTextMessage(address, message_sc_address, smsMe, null, null);
您可以从平板电脑/手机消息部分获取此消息地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.