Ich teste auf Xiaomi Redmi Note 3 und was ich brauche, ist sehr einfach: * Broadcast-Empfänger für eingehende Textnachrichten registrieren * Sobald Nachricht kommt, nur lesen Sie esAndroid 5.0.2 - SMS Broadcast Receiver - kann es nicht funktionieren
Es sieht aus wie ich Empfängerregister nicht bekommen kann, egal was ich versuche.
Von den Google-Dokumenten, seit 4.4 sollte es keine Möglichkeit für jede App geben, um das Ereignis zu schlucken und jede App hören sollte eine Chance bekommen, um das Ereignis zu bekommen.
Ich habe alle Arten von Kombinationen ausprobiert und so ziemlich alles gegoogelt. Könnte es das Xiaomi Telefonproblem sein?
Hier ist mein Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.com.dimitar.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="21" />
<uses-permission
android:name="android.permission.RECEIVE_SMS"
android:protectionLevel="dangerous" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver
android:name="com.example.com.dimitar.test.SmsListener"
android:enabled="true" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Java-Code:
package com.example.com.dimitar.test;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SmsListener extends BroadcastReceiver{
private SharedPreferences preferences;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
Toast toast = Toast.makeText(context, "poruka: ", Toast.LENGTH_SHORT);
toast.show();
if(bundle != null){
//---get the SMS message passed in---
SmsMessage[] msgs = null;
String msg_from;
if (bundle != null){
//---retrieve the SMS message received---
try{
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for(int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
msg_from = msgs[i].getOriginatingAddress();
String msgBody = msgs[i].getMessageBody();
Toast toast1 = Toast.makeText(context, "poruka: " + msgBody, Toast.LENGTH_SHORT);
toast1.show();
}
}catch(Exception e){
// Log.d("Exception caught",e.getMessage());
}
}
}
}
}
Welche Java-Code verwenden Sie die SMS zu fangen? – user3793589
Hinzugefügt Java-Code. Es ist nicht aufgeräumt, aber es ist nicht wichtig für dieses Problem :-). –
Wenn Ihr '' '' Name' 'auf die richtige Klassendatei verweist und Sie Ihre App mindestens einmal nach der Installation ausgeführt haben, ist das Problem möglicherweise auf Ihrem Gerät. Ich glaube, dass Xiaomis es nicht zulässt, dass Apps von Drittanbietern standardmäßig SMS erhalten. Überprüfen Sie die Einstellungen für Ihre App. Außerdem benötigen Sie das 'protectionLevel' Attribut für die Berechtigung nicht, obwohl ich nicht glaube, dass das das Problem verursacht. –