BroadCastReceiver如何继续监听甚至App-Activity被完全杀死

时间:2015-09-29 07:43:12

标签: android android-intent android-broadcast

我想构建一个应用程序来监听传入的消息,广播侦听器将调用一个Activity来做一些事情,它工作正常。 但是当应用被杀死时,广播监听器就会停止收听。

那么我如何让broadcastlistener听incomingsms?就像android的默认短信应用程序一样?

这是我的Broadcastlistener文件:

public class IncomingSms extends BroadcastReceiver {
      public void onReceive(Context context, Intent intent) {
      //DoSomeAction
      Intent myintent = new Intent(context,MainActivity.class); //It will be killed once later.
      context.startActivity(myintent);
      }
}

这是我的清单文件:

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.RECEIVE_SMS" />
 <uses-permission android:name="android.permission.READ_SMS" />
 <uses-permission android:name="android.permission.SEND_SMS" />
 <uses-permission android:name="ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED"/>     
     <receiver android:name=".IncomingSms" >
           <intent-filter>
               <action android:name="android.provider.Telephony.SMS_RECEIVED" />
           </intent-filter>
     </receiver>

2 个答案:

答案 0 :(得分:0)

您可以创建一个新服务,我们称之为“MyService”

public class MyService extends Service { 

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // Makes the service sticky, so that it gets restarted automatically.
        return Service.START_STICKY;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        // Your receiver code can go here.
    }
}

然后,您可以通过以下活动启动此服务:

startService(new Intent(this, MyService.class));

答案 1 :(得分:-1)

broadcastreceiver调用另一种方法不是一个好主意。如果你想做任何这样的事情,请在broadcastreceiver类中进行。

对清单中的接收器也设置enabled = true。