2017-02-18 2 views
-1

Ich bin neu bei Android-Programmierung.Toast machen, wenn SMS nicht funktioniert

Ich habe viel über das Tun jeden Code lesen, wenn eine SMS empfangen, aber alle von ihnen arbeiten nicht mit mir

bitte helfen!

, was ich will einen Toast tun macht, wenn eine SMS-Empfang

hier ist mein AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.salkhuzayyim.toastwhenreceivesms"> 

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

    <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"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name=".SmsListener" 
      android:enabled="true" 
      android:exported="true"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

und hier ist SmsListner.java

package com.salkhuzayyim.toastwhenreceivesms; 

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 { 
    public SmsListener() { 
    } 

    private SharedPreferences preferences; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
      Bundle bundle = intent.getExtras();   //---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.makeText(context, "SMS Received", Toast.LENGTH_SHORT).show(); 


        } 
       }catch(Exception e){ 
        // Log.d("Exception caught",e.getMessage()); 
       } 
      } 
     } 
    } 
} 

und ich m mit Android Studio, Simulator ist (Nexus_5X_API_25)

gibt es etwas, was ich sho Mögen Sie mit Ihnen teilen, um die Dinge einfacher zu machen?

Dank im Voraus

+1

Sie sagten API 25. 'RECEIVE_SMS' ist eine' gefährliche' Erlaubnis. Haben Sie angefordert, um die Erlaubnis vom Benutzer zu erhalten? https://developer.android.com/reference/android/Manifest.permission.html#RECEIVE_SMS –

+0

danke liebe @ th3pat3l für deine Antwort, wie gesagt ich bin neu bei Android, aber wird diese Zeile nicht die Erlaubnis von der bekommen user sowieso wird diese Anwendung nur von mir benutzt, sie ist verwandt mit anderen Projekten, sie wird nicht im Google Play Store verfügbar sein – sulaiman

Antwort

1

@sulaiman

Basierend auf Ihren Kommentar: Nein, unter der Leitung wird Ihnen nicht die Berechtigung, die Sie SMS lesen müssen.

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

Sie brauchen immer noch diese Zeile. Also entferne es nicht.

Der Grund dafür ist, was Android "Runtime Permissions" nennt. Seit API 23 (6.0 und höher) müssen Sie explizit um Berechtigungen für alle Berechtigungen mit dangerous Ebenen bitten.

Bitte lesen Sie mehr und verstehen Sie, wie das funktioniert here.

Um diese Frage zu lösen, müssen Sie beim ersten Öffnen der App um Erlaubnis fragen. Werfen Sie einen Blick auf den Abschnitt Request Permission.

+0

vielen dank, Ich wusste nur über die neue Art der Berechtigungen, das war hilfreich :-) – sulaiman

Verwandte Themen