2016-06-20 21 views
1

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()); 
       } 
      } 
     } 
    } 
} 
+0

Welche Java-Code verwenden Sie die SMS zu fangen? – user3793589

+0

Hinzugefügt Java-Code. Es ist nicht aufgeräumt, aber es ist nicht wichtig für dieses Problem :-). –

+1

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. –

Antwort

1

Sieht aus wie Xiaomi eine Sicherheitsanwendung hat, die so ziemlich alles steuert. Siehe another question and answer here

Schritte:

  • zu den Einstellungen> installierten Anwendungen
  • die App finden> tippen Sie
  • gehen, um Berechtigungen Manager und ermöglichen die Erlaubnis benötigen Sie

Oder:

  • gehen Sie zu Sicherheits-App
  • Hahn Berechtigungen
  • Wählen Sie Autostart oder Berechtigungen und aktivieren, was Sie brauchen für Ihre App