오전 내 앱에서 수신 SMS 모니터링을 시도합니다. Android 측에서 수신 SMS 모니터링을 위해 API 19에서 변경했습니다.Android API에서 수신 SMS를 모니터링하는 방법 <19 & API > = 19?
백그라운드에서 들어오는 메시지 (백그라운드가 아닌 & 모바일 화면이 꺼진 상태의 앱 시점)를 API 23에 추적 할 수 없습니다.
Android 문서에서 앱이 기본 메시지 앱이 아닌 경우 백그라운드에서 수신 SMS를 추적 할 수 없음 API 19.
참조 : - Getting Your SMS Apps Ready for KitKat
그러나 내 API 21 (LOLLIPOP) 장치의 작동. API 23 (Marshmallow) 기기에서 작동하지 않습니다. 기기 화면이 켜져 있거나 앱이 열려있는 경우 API 23 (마시맬로)에서도 작동합니다.
업데이트 할 수 있습니까? API 23 (마시 멜로우)에 백그라운드에서 수신 메시지를 추적 할 수있는 방법이 있습니까?
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<receiver
android:name=".SMSReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="5822">
<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.Build;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class SMSReceiver extends BroadcastReceiver {
public static final String BROADCAST = "SMS_RECEIVER";
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
Intent broadcast_intent;
String message_body = "", originAddress;
StringBuilder bodyText;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(SMS_RECEIVED)) {
broadcast_intent = new Intent(BROADCAST);
Bundle bundle = intent.getExtras();
SmsMessage[] messages;
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
messages = new SmsMessage[pdus.length];
bodyText = new StringBuilder();
for (int i = 0; i < messages.length; i++) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String format = bundle.getString("format");
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], format);
} else {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
originAddress = messages[i].getOriginatingAddress().toUpperCase();
bodyText.append(messages[i].getMessageBody());
}
message_body = bodyText.toString();
}
}
}
}
모든 보안 권한 검사가 완료되었습니다. 내가 사용하는 허가. – Yugesh