編輯:關於Android編程
情景概要:自己做的一個項目的時候,獲得不到開啟啟動的通知,這樣更別說開機啟動通知裡面實現開機服務功能了,查找了N多資料,說法不一,太多的人說4.0之後無法獲得開機通知,通過各種渠道,請求各方大牛的幫助解決辦法的方式仍然是那些N多人說不可行的方法,即使大牛給的是英文文檔也是說這樣可以的。
最後發現,開啟啟動通知已經實現了,但是自己的疏忽沒有發現,我通過在通知裡面彈出一個Toast,但是真機或者模擬器在開機的時候都需要很多啟動項,導致最後的Toast彈出很晚,而自己卻沒看見,或者說開機後已經鎖屏了,鎖屏後彈出的Toast是看不到的。你可以在通知裡面彈出10個以上的Toast,測試一下,發現通知確實啟動了,只是時間慢了些。有人說不同的機型下還是得不到開機啟動通知,我還了三款手機測試,均通過。
下面是轉載的一篇測試版,大家可以簡單測試。
幾個月來看到CSDN上看到很多朋友發帖詢問開機自動啟服務的問題,也就是BOOT_COMPLETED廣播的問題,有的人說開機能收到廣播,有的人又說開機收不到廣播,這裡本人親自試驗並總結分享給大家!
原來,在3.1之後,系統的PackageManager增加了對處於“stopped state”應用的管理, 這個stopped和Activity生命周期中的stop狀態是完全兩碼事,包管理器中的stopped state指的是安裝後從來沒有啟動過或者是被用戶手動強制停止的應用。這點大家可以到“設置”——>"應用程序",查看任何一個安裝的應用,看看“行停止”這個按鈕是否變灰就知道了。系統增加了2個Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES , 來標識一個intent是否激活處於“stopped state”的應用。當2個Flag都不設置或者都進行設置的時候,采用的是FLAG_INCLUDE_STOPPED_PACKAGES的效果。有了上面的新機制之後, google覺得給所有的廣播intent默認加上FLAG_EXCLUDE_STOPPED_PACKAGES會非常的Cooooool,能在一定程度上避免流氓軟件、病毒啊干壞事,還能提高效率,就導致了RECEIVE_BOOT_COMPLETED廣播如果用戶沒有運行過應用或者在設置中強行停止了應用, 就不會接BOOT_COMPLETED廣播。那麼如果要實現開機自啟動服務,該怎麼實現?直接上源碼
1、BootCompletedReceiver.java文件
public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.d("LibraryTestActivity", "recevie boot completed ... "); context.startService(new Intent(context, TestService.class)); } }
配置文件中:
3、安裝應用到你的手機後,啟動一次該應用,那麼下次開機就能收到BOOT_COMPLETED廣播,並且就能看到TestService服務啟動了。
做了個測試:到設置——>應用程序,找到剛才安裝的應用,點擊“強行停止”,那麼重啟手機後,就收不到BOOT_COMPLETED廣播了。
如果該應用被有些三方安全軟件強制殺掉進程後,重啟手機也會收不到BOOT_COMPLETED廣播。
1、什麼是protectionlevel呢?我們經常在AndroidManifest中使用權限,如果我們想讓應用程序可以發短信,那麼應該這樣寫: 那麼這個權限
Android的界面是有布局和組件協同完成的,布局好比是建築裡的框架,而組件則相當於建築裡的磚瓦。組件按照布局的要求依次排列,就組成了用戶所看見的界面。Android的五
程序應用步驟:打開應用:onCreateonStartonResumeBACK鍵:onPauseonStoponDestoryHOME鍵:onPauseonStop再次啟
一個朋友今天有這麼個需求(下圖),我覺得那自定義View來做還是很適合的,就做了下,順便和大家分享下,對於自定義View多練沒壞處麼。如果你看了前兩篇,那麼