如何在重启手机后保持广播接收器存活?

时间:2014-03-11 09:58:31

标签: android broadcastreceiver telephonymanager

我正在尝试制作一个我正在使用广播接收器的应用。我的要求是当我在手机中安装我的应用程序并在运行它之后退出时保持我的广播接收器活着。我能够达到这个要求,但是当我使用任务管理器杀死应用程序时,广播接收器没有触发,我也想让我的广播接收器保持活着,即使有人重新启动手机。我的主要活动的代码:

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

            telephonyManager = (TelephonyManager)     getSystemService(Context.TELEPHONY_SERVICE);
        PhoneStateListener psl = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                // TODO Auto-generated method stub

                if (state == TelephonyManager.CALL_STATE_RINGING) {
                    Intent intent2open = new Intent(MainActivity.this,
                            MainActivity.class);
                    intent2open.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
                            | Intent.FLAG_ACTIVITY_NEW_TASK
                            | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
                            | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
                    intent2open.setAction("android.intent.action.VIEW");
                    intent2open.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent2open.setAction(Intent.ACTION_MAIN);
                    intent2open.addCategory(Intent.CATEGORY_LAUNCHER);
                    intent2open.setFlags(0);

        Toast.make_Text(Context(),
            "Incoming call" + incomingNumber, Toast.LENGTHLONG)
                            .show();
                }
                super.onCallStateChanged(state, incomingNumber);
            }
        };
        telephony Manager.listen(psl, PhoneStateListener.LISTEN_CALL_STATE);

    }

以下是我的广播接收器代码:

@Override
    public void on Receive(Context context, Intent intent) {
        // TO DO Auto-generated method stub

        String state = intent.get String Extra(Telephony Manager.ACTION_PHONE_STATE_CHANGED);

        if(state.equals(Telephony Manager.CALL_STATE_RINGING))
        {
            Intent intent2 = new Intent("com.example.app.Activity");
            intent2.putExtras(intent2);
            intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent2);

        }

    }

以下是我的manifest.xml代码:

    <application

        <activity
            android:name="com.example.app.Activity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="com.example.app.Receiver"
            android:exported="true"
            android:enabled="true">
             <intent-filter>
                <action android:name="com.example.app.Activity" />
        </intent-filter>
        </receiver>
    </application>

请帮帮我!!! .....提前谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以创建服务并在该服务中注册广播接收器。 您应该使用startService启动该服务,以便它始终运行。 为了在重新启动后运行它,创建一个广播接收器,它将注册引导完成动作,这将启动^服务。