當前位置:編程學習大全網 - 源碼下載 - Android 開發,Launch開機自啟動APP總是出現提示框,設置了之後還是會出現,說是要求回

Android 開發,Launch開機自啟動APP總是出現提示框,設置了之後還是會出現,說是要求回

android如何實現開機自動啟動Service或app(轉)

第壹步:首先創建壹個廣播接收者,重構其抽象方法 onReceive(Context context, Intent intent),在其中啟動妳想要啟動的Service或app。

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class BootBroadcastReceiver extends BroadcastReceiver {

//重寫onReceive方法

@Override

public void onReceive(Context context, Intent intent) {

//後邊的XXX.class就是要啟動的服務

Intent service = new Intent(context,XXXclass);

context.startService(service);

Log.v("TAG", "開機自動服務自動啟動.....");

//啟動應用,參數為需要自動啟動的應用的包名

Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);

context.startActivity(intent );

}

}

第二步:配置xml文件,在receiver接收這種添加intent-filter配置

第三步:添加權限

2、自啟動失敗的原因

接收不到BOOT_COMPLETED廣播可能的原因

(1)、BOOT_COMPLETED對應的action和uses-permission沒有壹起添加

(2)、應用安裝到了sd卡內,安裝在sd卡內的應用是收不到BOOT_COMPLETED廣播的

(3)、系統開啟了Fast Boot模式,這種模式下系統啟動並不會發送BOOT_COMPLETED廣播

(4)、應用程序安裝後重來沒有啟動過,這種情況下應用程序接收不到任何廣播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。

Android3.1之後,系統為了加強了安全性控制,應用程序安裝後或是(設置)應用管理中被強制關閉後處於stopped狀態,在這種狀態下接收不到任何廣播。直到被啟動過(用戶打開或是其他應用調用)才會脫離這種狀態,所以Android3.1之後

(1)、應用程序無法在安裝後自己啟動

(2)、沒有ui的程序必須通過其他應用激活才能啟動,如它的Activity、Service、Content Provider被其他應用調用。

存在壹種例外,就是應用程序被adb push you.apk /system/app/下是會自動啟動的,不處於stopped狀態。

具體說明見:

/about/versions/android-3.1.html#launchcontrols

monsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html

3、adb發送BOOT_COMPLETED

我們可以通過

1

adb

shell

am

broadcast

-a

android.intent.action.BOOT_COMPLETED

命令發送BOOT_COMPLETED廣播,而不用重啟測試機或模擬器來測試BOOT_COMPLETED廣播,這條命令可以更精確的發送到某個package,如下:

1

adb

shell

am

broadcast

-a

android.intent.action.BOOT_COMPLETED

-c

android.intent.category.HOME

-n

package_name/class_name

  • 上一篇:bt種子什麽意思
  • 下一篇:天津科技大學人機工程學精品課程
  • copyright 2024編程學習大全網