Android開機自動運行APP——BroadcastReceiver

前言:

有些時候,應用須要在開機時就自動運行,例如某個自動從網上更新內容的後臺service。怎樣實現開機自動運行的應用?在撰寫本文時,聯想到高煥堂先生以「Don't call me, I'll call you back!」總結Android框架,真是說到點子上了。理解這句話的含義,許多有關Android平臺上實現某種功能的問題,都能迎刃而解。 java

使用場景:

手機開機後,自動運行程序。 android

{只是最近本人在作萬達大歌星點餐系統,須要用到系統啓動直接啓動App避免服務員玩別的app才研究的,如下分享是本人蔘考網絡,親自嘗試成功的代碼,貼出來與你們分享,但願能幫助更多的人!不懂的能夠問我哦。QQ:11745405 } 網絡

背景知識:

當Android啓動時,會發出一個系統廣播,內容爲ACTION_BOOT_COMPLETED,它的字符串常量表示爲android.intent.action.BOOT_COMPLETED。只要在程序中「捕捉」到這個消息,再啓動之便可。記住,Android框架說:Don't call me, I'll call you back。咱們要作的是等到接收這個消息,而實現的手段就是實現一個BroadcastReceiver。 app

代碼解析:

一、界面MainActivity.java

package com.example;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.*;
import android.widget.Toast;

public class MainActivity extends Activity {   // 收到消息啓動此Activity
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setIntegerProperty("splashscreen", R.drawable.wandapad_splash);
        TextView tv = new TextView(this);
        tv.setText("Hello這是MainActivity");
        setContentView(tv);
    }

二、接收廣播消息:BootBroadcastReceiver.java

package com.example;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

/**
 * Created with IntelliJ IDEA.
 * User: 郟高陽
 * Date: 13-6-5
 * Time: 下午8:25
 * To change this template use File | Settings | File Templates.
 */
public class BootBroadcastReceiver extends BroadcastReceiver {
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ACTION)) {
            Intent mainActivityIntent = new Intent(context, MainActivity.class);  // 要啓動的Activity
            mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainActivityIntent);
        }
    }
}
該類派生自BroadcastReceiver,覆載方法onReceive中,檢測接收到的Intent是否符合BOOT_COMPLETED,若是符合,則啓動MainActivity。

三、配置文件:AndroidManifest.xml

application內添加一下配置: 框架

<receiver android:name=".BootBroadcastReceiver">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
  </receiver>

向系統註冊了一個receiver,子節點intent-filter表示接收android.intent.action.BOOT_COMPLETED消息。 ide

四、在manifest中添加如下權限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
五、大功告成!

延伸思考:

在多數狀況下,要自動運行的不是有界面的程序,而是在後臺運行的service。此時,就要用startService來啓動相應的service了。 this

❤犒勞一杯咖啡❤
spa

原文連接:http://my.oschina.net/jgy/blog/135858 .net

相關文章
相關標籤/搜索