Android 广播接收器内部活动不工作

Android 广播接收器内部活动不工作,android,broadcastreceiver,android-broadcast,Android,Broadcastreceiver,Android Broadcast,我正在开发一个显示消息的应用程序,因为我正在活动中使用BroadcastReceiver,我正在尝试刷新onReceive方法中的listview,但onReceive没有收到调用。请帮助我 public class MessageActivity extends BaseActivity { private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { @Override

我正在开发一个显示消息的应用程序,因为我正在活动中使用BroadcastReceiver,我正在尝试刷新onReceive方法中的listview,但onReceive没有收到调用。请帮助我

public class MessageActivity extends BaseActivity {


    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
            // Extract data included in the Intent
            String message = intent.getStringExtra("message");
            Log.d("receiver", "Got message: " + message);
            Toast.makeText(getApplicationContext(), "Inside Reciver",Toast.LENGTH_SHORT).show();
            getSMSCursorCount();
            loadInitialMessages();
          }
        };
protected void onCreate(Bundle savedInstanceState) {

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.messageinbox);
}

    @Override
    public void onResume() {
        super.onResume();
        IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
        intentFilter.setPriority(1000);
        registerReceiver(mMessageReceiver, intentFilter);
            Log.d("This is onResume method ","<<<<<<<<< onResume <<<<<<<<<");
            try {
                getSMSCursorCount();
                loadInitialMessages();
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

    @Override
    protected void onPause()
    {
        super.onPause();
        try {
            unregisterReceiver(mMessageReceiver);
        } catch (IllegalArgumentException e) {
            if (e.getMessage().contains("Receiver not registered")) {
                // Ignore this exception. This is exactly what is desired
                Log.w(TAG,"Tried to unregister the reciver when it's not registered");
            } else {
                // unexpected, re-throw
                throw e;
            }
        }
         Log.d("This is onPause method ","<<<<<<<<< onPause <<<<<<<<<");
    }
public类MessageActivity扩展了BaseActivity{
private BroadcastReceiver mMessageReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//提取意图中包含的数据
字符串消息=intent.getStringExtra(“消息”);
Log.d(“接收方”,“收到消息:+消息”);
Toast.makeText(getApplicationContext(),“内部接收器”,Toast.LENGTH\u SHORT.show();
getSMSCursorCount();
loadInitialMessages();
}
};
创建时受保护的void(Bundle savedInstanceState){
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
super.onCreate(savedInstanceState);
setContentView(R.layout.messageinbox);
}
@凌驾
恢复时公开作废(){
super.onResume();
IntentFilter IntentFilter=新的IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);
intentFilter.setPriority(1000);
注册接收者(mMessageReceiver、intentFilter);

Log.d(“这是onResume方法”,”您必须通过扩展BroadcastReceiver来编写单独的广播接收器类,并使用intentfilter在清单文件中声明它。重写onReceive方法并在那里调用您的活动。如果意图来自广播接收器,则在oncreate of activity刷新或listview中

 public class MessageReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("inside message receiver... ");

           Intent popupintent = new Intent(context,ShowNotificationDialog.class);
            popupintent.putExtra("from", "broadcast");
            context.startActivity(popupintent);  



    }



public class ShowNotificationDialog extends Activity
        {

         @Override
            protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

       Intent i = getIntent();
      String fromString = i.getStringExtra("from");
      if(from != null)
       {
       if(from.equals("from"))

       // refresh your listview

       }

    }
}
在舱单中:

<receiver android:name=".MessageReceiver" >
            <intent-filter>
                <action android:name="broadcast action" />
            </intent-filter>
        </receiver>


您是否为电话添加了权限?是的,我已经包括了所有必要的权限。问题是广播接收器有问题,请告诉我,如果您发现任何错误,Madhu,我们也可以这样做。我您知道当前方法的任何信息,让我知道您的建议是不必要的。@hemant或者您可以通过注册尝试用oncreate方法拨打广播接收器–Madhu我已经在里面注册了onResume@hemant几天前我也遇到过同样的问题,我用我在上面的回答中建议的方法解决了它。