2 figurers figurers 于 2017.09.15 11:25 提问

安卓开发关于通过广播获取信息的问题

申请权限

            <!--短信广播监听器-->
    <receiver android:name=".Broadcast">
        <intent-filter android:priority="999">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class Broadcast extends BroadcastReceiver {
private static final String ACTION="android.provider.Telephony.SMS_RECEIVED";
private Message message=new Message();
private Bundle bundle=new Bundle();
@Override
public void onReceive(Context context, Intent intent){
Toast.makeText(context, "来短信啦",Toast.LENGTH_SHORT).show();
if(ACTION.equals(intent.getAction())){
SmsMessage[] smsMessage=getMessageFromIntent(intent);
StringBuilder str=new StringBuilder();
if(smsMessage!=null&&smsMessage.length>0){
for(SmsMessage smg:smsMessage){
str.append(smg.getDisplayOriginatingAddress()+":\n ");
str.append(smg.getDisplayMessageBody()+"\n");
}
}
Toast.makeText(context, str.toString(),Toast.LENGTH_SHORT).show();
}
}
public static SmsMessage[] getMessageFromIntent(Intent intent){
SmsMessage[] smsMessage=null;
Bundle bundle=intent.getExtras();
Object[] puds=(Object[])bundle.get("puds");
smsMessage=new SmsMessage[puds.length];
for(int i=0;i<puds.length;i++){
byte[] data=((byte[])puds[i]);
smsMessage[i]=SmsMessage.createFromPdu(data);
}
return smsMessage;
}
}

请问哪里错了就是监听不了短信,有人发短信来没app没反应

不好意思我小白一个没有C币,求助

3个回答

github_38117599
github_38117599   2017.09.16 17:57
已采纳

如果代码没错应该是手机的问题了,有些手机厂商为了用户数据的安全,做系统的时候会把某些源码改掉的。比如我的小米的有很多功能被限制了,太tm恶心了。

qq_24938003
qq_24938003   2017.09.15 16:31

是不是AndroidManifest里面没有加这个权限

figurers
figurers 加了 <uses-permission android:name="android.permission.RECEIVE_SMS"/>
2 个月之前 回复
qq_24938003
qq_24938003   2017.09.15 16:31

Csdn user default icon
上传中...
上传图片
插入图片