Dev*_*v01 1 android broadcastreceiver
似乎如果带有一些较大文本的短信出现,由于某种原因它被删除,所以不是整个短信进来,这是我的代码:
public class SmsReceiver extends BroadcastReceiver {
// vars here
@Override
public void onReceive(Context context, Intent intent) {
// Get SMS map from Intent
Bundle extras = intent.getExtras();
if (extras != null) {
// Get received SMS array
Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);
String address = "";
String body = "";
for (int i = 0; i < smsExtra.length; ++i) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
body = sms.getMessageBody().toString();
address = sms.getOriginatingAddress();
}
// show the popup
Intent intnt = new Intent(context, ShowNotification.class);
intnt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intnt.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intnt.putExtra("address", address);
intnt.putExtra("body", body);
context.startActivity(intnt);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们假设sms文本是:
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra.
我在toast上显示从上面的广播接收器收到的短信,只有最后几个字在吐司中显示,或者即使我将这个sms主体传递给另一个弹出意图,只有尽可能多的文本传递,如吐司所示:
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, body, duration);
toast.show();
Run Code Online (Sandbox Code Playgroud)
所以由于某种原因不是整个短信文本进来:(
任何人都可以告诉如何处理这个?正如我所看到的其他短信应用程序,如SMS Popup或Go SMS Pro,他们确实获得完整的短信文本,并在弹出窗口或对话中显示.
谢谢你的帮助
好吧我知道了,我使用的代码只得到最后一个短信,只需要附加所有短信:
这个:
body = sms.getMessageBody().toString();
Run Code Online (Sandbox Code Playgroud)
应该:
body += sms.getMessageBody().toString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |