2016-05-16 70 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); 
    } 

} 

另一个就是为什么我从来没有在我的活动日志 “测试”。就像监听器总是空,为什么?

回答

1

您应该添加在onCreate()

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

末在的onPause()

unregisterReceiver(receiver); 

附加也AndroidManifest.xml中

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
以下权限