2016-05-16 13 views
-2

私はいくつかの投稿を読んでいましたが、私には良い答えはありません。android - ブロードキャストからアクティビティへのメッセージの受け渡し

これは、ブロードキャストからアクティビティを再起動せずにアクティビティにデータを渡すための最良の方法ですか?

実際に私はこれを使用しています。

SMSListener:

public class SmsListener extends BroadcastReceiver { 
private OnSmsReceivedListener listener = null; 
@Override 
public void onReceive(Context context, Intent intent) { 

    try { 
     if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
       for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent)) { 
        String messageBody = smsMessage.getMessageBody(); 
        String phoneNumber = smsMessage.getDisplayOriginatingAddress(); 
        if (listener != null) { 
         listener.onSmsReceived(phoneNumber, messageBody); 
        } 
       } 
      } 
     } 
    } catch (Exception e) 
    { 
     Log.e("Error", "Some some"); 
    } 
} 

public void setOnSmsReceivedListener(Context context) { 
    this.listener = (OnSmsReceivedListener) context;  
} 
} 

OnSmsReceivedListener:

public interface OnSmsReceivedListener { 
void onSmsReceived(String sender, String message); 
} 

活動:

public class MainActivity extends AppCompatActivity implements OnSmsReceivedListener { 
    private SmsListener receiver; 

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 

     /***********/ 
      receiver = new SmsListener(); 
     receiver.setOnSmsReceivedListener(this); 
    } 

    @Override 
    public void onSmsReceived(String sender, String message) { 
     Log.e("Test", "Sender: "+sender+" - Message: "+message); 
    } 

} 

私は私の活動に "テスト" をログ取得することはありませんなぜ私の質問の別のです。リスナーのようなものはいつもヌルです、なぜですか?

あなたが onCreate()

final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; 
IntentFilter intentFilter = new IntentFilter(SMS_RECEIVED_ACTION); 
registerReceiver(receiver, intentFilter); 

とonPause(中の最後に追加する必要があります

答えて

1

unregisterReceiver(receiver); 

もAndroidManifest.xmlを

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
で次の権限を追加
関連する問題