初入android的坑,有什么错误 和 问题,大家指出来,多谢了
这段时间由于私人需求,要做个短信多发软件 就想起用AS开发 结果在 sendMultipartTextMessage时遇到了
困顿我好几天的问题,在百度上查找 Pendingintent 参数 也是没什么作用(sendMultipartTextMessage 的使
用也是在网上看的)
跑题了。。。
先说说是什么问题吧:sendMultipartTextMessage(String,sc,ArrayList<String>,ArrayList<Pendingintent> sents,ArrayList<Pendingintent> devs)
这个函数 中的devs广播 参数 不刷新 一直是第一个的参数。嗯 。没遇到此问题的大佬 萌新可以撤了 哈哈
后来我一直苦苦思考是不是 Pendingintent.getBroadcast 的参数传错了 一直到第三天 我尝试 将 Intent(Action)
和 IntentFliter(Action)中的Action改成变化值 这个问题才被解决
我承认我思维混乱 胡说八道 所以 下面用代码实例来说明吧
int times = 0;
private PendingIntent RegisterReceiver_SendSms(int index, final String Id) {//创建一个监听发送结果的广播
String Action = getString(R.string.Send_Sms_Action);//Action=“SEND_SMS_ACTION”
Intent paramIntent = new Intent(Action);
Log.i(TAG, "RegisterReceiver_SendSms压入参数: Id: " + Id + " Index: " + index);
paramIntent.putExtra("Id", Id);
paramIntent.putExtra("Index", index);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, times++, paramIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Log.i(TAG, "RegisterReceiver_SendSms Times:" + times);
MyService.this.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String Id = bundle.getString("Id");
int index = bundle.getInt("Index");
context.unregisterReceiver(this);
}
}, new IntentFilter(Action));
return pendingIntent;
}
private PendingIntent RegisterReceiver_Delivered(int index, final String Id) {//创建一个监听是否送达的广播
times++;
String Action = getString(R.string.Delivered_Sms_Action);//Action=“DELIVERED_SMS_ACTION”
Intent sendIntent = new Intent(Action+times);//修改之前这里只有个Action
Log.i(TAG, "RegisterReceiver_Delivered压入参数: Id: " + Id + " Index: " + index);
sendIntent.putExtra("Id", Id);
sendIntent.putExtra("Index", index);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, times, sendIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Log.i(TAG, "RegisterReceiver_SendSms Times:" + times);
MyService.this.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String Id = bundle.getString("Id");
int index = bundle.getInt("Index");
Log.i(TAG, "index :" + index);
context.unregisterReceiver(this);
}
}, new IntentFilter(Action+times));//修改之前这里只有个Action
return pendingIntent;
}
这个是发送短信函数里面的片段:
ArrayList<String> dvideSms = smsManager.divideMessage(Sms);
for (int i = 0; i < dvideSms.size(); ++i) {
SentInts.add(RegisterReceiver_SendSms(CurrIndex, Id));
Delivereds.add(RegisterReceiver_Delivered(CurrIndex, Id));
}
smsManager.sendMultipartTextMessage(PhoneNumber, null, dvideSms, SentInts, Delivereds);//发送
CurrIndex 是 自增变量范围:[0,2],自增条件为每重新执行
这个发送短信函数
假如 短信全部发送并被接收了 那正确输出的日志
应该是 index : 0 而实际上未修改之前是 index : 0
index : 1 index : 0
index : 2 index : 0
我也不知道是什么原因 也不知道会有什么问题 但确确实实解决了我当前的问题