2016-08-20 3 views
0

Ich möchte eine App entwickeln, um mich mit einer Toast zu benachrichtigen, wenn eine SMS-Nachricht empfangen wird. Durch die Verwendung von BroadcastReceiver unten ist mein Code:Show Toast, wenn SMS Nachricht mit Broadcast-Empfänger empfangen

public class SMSBroadcastReceiver extends BroadcastReceiver { 

    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
    private static final String TAG = "SMSBroadcastReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Log.e(TAG, "Intent received: " + intent.getAction()); 

     if (intent.getAction().equals(SMS_RECEIVED)) { 

      Toast.makeText(context, "new incoming message" , Toast.LENGTH_LONG).show(); 
     } 

    } 

} 

und Manifest-Datei:

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:theme="@style/AppTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".SMSBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.provider.telephony.SMS_RECEIVED"></action> 
      </intent-filter> 
     </receiver> 

    </application> 

das Problem ist weder Log noch Toast zeigt. Wo ist das Problem und was soll ich dafür tun?

+0

Bitte suchen Sie auf Google für SMS Broadcast. Du wirst dafür Lösung :) –

+0

Ich hatte gesucht, aber keine brauchbaren Ergebnisse. –

+0

"Telefonie" muss in der '' '' 'im Manifest groß geschrieben werden. '" android.provider.Telephony.SMS_RECEIVED "'. Stellen Sie außerdem sicher, dass Sie Berechtigungen ordnungsgemäß verarbeiten, wenn Sie auf Marshmallow + ausführen. Und stellen Sie sicher, dass Sie Ihre MainActivity mindestens einmal nach der Installation ausführen. –

Antwort

-1

Ich habe für meinen SMS-Empfänger mit dem folgenden Code:

<receiver android:name=".SMSBroadcastReceiver" 
       android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter android:priority="1000"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 
+0

leider nicht funktioniert –

0
public class SmsReceiver extends BroadcastReceiver { 

    private String TAG = SmsReceiver.class.getSimpleName(); 

    public SmsReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Get the data (SMS data) bound to intent 


     Bundle bundle = intent.getExtras();  

     if (bundle != null) { 
      // Retrieve the SMS Messages received 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      SmsMessage msgs = new SmsMessage[pdus.length]; 
      //YOUR TOAST 
     } 
} 

Sie Details von msgs

Und In Manifest-Datei

<receiver 
      android:name=".broadcast.SmsReceiver" 
      android:enabled="true" 
      android:exported="true"> 
      <intent-filter android:priority="999"> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
</receiver> 

Arbeitsdatei bekommen in der Live-App. Hoffe, das hilft ..