1
리시버를 사용하여 수신 메시지를 읽으려고합니다. 튜토리얼을 따르고 코드를 추가했지만 브로드 캐스트 리시버가 실행되지 않습니다. onReceive 내부에 배치 된 로그는 해고되지 않습니다.BroadCast 리시버가 들어오는 SMS 메시지를받지 못합니다.
매니페스트
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application
android:name=".xyz"
android:allowBackup="true"
android:icon="@mipmap/icon_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<receiver android:name="xyz.receiver.SmsReceiver">
<intent-filter android:priority="1">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
브로드 캐스트 리시버
public class SmsReceiver extends BroadcastReceiver {
private static SmsListener mListener;
@Override
public void onReceive(Context context, Intent intent) {
Bundle data = intent.getExtras();
Log.e("TEST",data.toString());
Object[] pdus = (Object[]) data.get("pdus");
for(int i=0;i<pdus.length;i++){
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdus[i]);
String sender = smsMessage.getDisplayOriginatingAddress();
String messageBody = smsMessage.getMessageBody();
mListener.messageReceived(messageBody);
}
}
public static void bindListener(SmsListener listener) {
mListener = listener;
}
}
활동
SmsReceiver.bindListener(new SmsListener() {
@Override
public void messageReceived(String messageText) {
Toast.makeText(OTPActivity.this, "Message: " + messageText, Toast.LENGTH_LONG).show();
}
});
은 적절한 패키지 이름입니까? "'' –
@Darshan it proper .. 나는 tht도 시도했습니다 .. – Bhuvi
괜찮습니다. 매니페스트와 인 텐트 필터 각각에서 수신기에 다음 줄을 추가해보십시오.'