2016-09-16 5 views
0

Я не знаю, что пошло не так, но у меня с этим трудное время. Предполагается, что программа должна показывать тост после получения сообщения. Я попытался добавить приоритет в файл манифеста, но он не работает.Android BroadcastReceiver не обнаруживает SMS

файл манифеста

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

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="24" /> 

<uses-permission-sdk-23 android:name="android.permission.SEND_SMS" /> 
<uses-permission-sdk-23 android:name="android.permission.READ_SMS" /> 
<uses-permission-sdk-23 android:name="android.permission.RECEIVE_SMS" /> 

<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<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> 
    <activity android:name=".Settings" /> 

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

Broadcast Receiver

public void onReceive(Context context, Intent intent) { 
     Log.d("RECEIVE", "Receiving SMS"); 
     Bundle intentExtras = intent.getExtras(); 
     if(intentExtras != null){ 
      Object[] sms = (Object[]) intentExtras.get("pdus"); 
      String msgStr = ""; 
      for(int i = 0; i < sms.length; ++i){ 
       SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]); 
       String smsBoddeh = smsMessage.getMessageBody().toString(); 
       String addr = smsMessage.getOriginatingAddress(); 

       msgStr += "SMS From " + addr + "\n"; 
       msgStr += smsBoddeh + "\n"; 
      } 
      Toast.makeText(context.getApplicationContext(), msgStr, Toast.LENGTH_SHORT).show(); 
      Log.d("RECEIVE", msgStr); 
     } 
} 
+0

Вы добавили разрешение? –

+0

Если вы забыли добавить разрешения здесь, то добавьте его в файл манифеста. –

+0

ответ

0

Попробуйте включить же ..

<receiver 
    android:name="com.smsforwarder.smsforwarder.SMSReceiver" 
    **android:enabled="true">** 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
    </intent-filter> 
</receiver> 
+0

И Да ... Права должны быть в файле манифеста .. – Ishant

Смежные вопросы