當前位置:編程學習大全網 - 源碼下載 - 求android開機啟動代碼

求android開機啟動代碼

原理

當Android系統完成BOOT階段之後,就會發送壹條名為 ACTION_BOOT_COMPLETED 的廣播,我們便可在壹個BroadcastReceiver中捕獲這條廣播,然後啟動我們的Activity或者Service,當然要註意的是,我們的application必須具有捕獲該廣播的權限,下面請看具體步驟:

步驟壹首先要有壹個用於開機啟動的Activity或者Service,這裏以系統自己創建的最簡單的Activity為例進行講解。

package com.billhoo.study;

import android.app.Activity;

import android.os.Bundle;

public class BootTestActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

}

步驟二我們要編寫壹個BroadcastReceiver用以捕獲ACTION_BOOT_COMPLETED這條廣播,並在捕獲之後啟動我們要啟動的Activity。

註意:必須在intent中添加Intent.FLAG_ACTIVITY_NEW_TASK標記,這就是我之前老是啟動失敗的原因。至於為什麽,我還在研究SDK doc,明白了之後就回來補上。

package com.billhoo.study;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

public class BootCompletedReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))

{

Intent newIntent = new Intent(context, BootTestActivity.class);

newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);? //註意,必須添加這個標記,否則啟動會失敗

context.startActivity(newIntent);?

}?

}

}

步驟三在AndroidManifest.xml配置文件中註冊我們的BroadcastReceiver

<receiver android:name=".BootCompletedReceiver">

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED" />

</intent-filter>

</receiver>

步驟四在AndroidManifest.xml配置文件中添加允許我們捕獲該廣播的權限

<!-- permissions -->

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

之前把uses-permission 打錯成permission ,結果壹直提示下面這個錯誤:

Permission Denial: receiving Intent { act=android.intent.action.BOOT_COMPLETED flg=0x8000010 (has extras) } to com.example.boottest/.BootCompletedReceiver requires android.permission.RECEIVE_BOOT_COMPLETED due to sender null (uid 1000)

重啟虛擬機,大功告成。

下面附上完成的AndroidManifest.xml,以便大家理解參考

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="/apk/res/android"

package="com.billhoo.study" android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="4" />

<!-- permissions -->

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application android:icon="@drawable/icon" android:label="@string/app_name">

<!-- activities -->

<activity android:name=".BootTestActivity" android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<!-- receivers -->

<receiver android:name=".BootCompletedReceiver">

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED" />

</intent-filter>

</receiver>

</application>

</manifest>

  • 上一篇:使用PHP的cURL庫進行網頁抓取
  • 下一篇:請教壹下treeview的用法
  • copyright 2024編程學習大全網