本篇內(nèi)容主要講解“Android開發(fā)怎么實(shí)現(xiàn)應(yīng)用層面屏蔽狀態(tài)欄”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Android開發(fā)怎么實(shí)現(xiàn)應(yīng)用層面屏蔽狀態(tài)欄”吧!
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括濱湖網(wǎng)站建設(shè)、濱湖網(wǎng)站制作、濱湖網(wǎng)頁(yè)制作以及濱湖網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,濱湖網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到濱湖省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!一、由于StatusBarManager在SDK中沒(méi)有提供,所以需要使用反射來(lái)調(diào)用該類的方法
代碼部分如下:
Object service = getSystemService("statusbar"); try { Class <?> statusBarManager = Class.forName("Android.app.StatusBarManager"); Method expand = statusBarManager.getMethod("disable",int.class); expand.invoke (service,0×00000001); } catch (Exception e) { e.printStackTrace(); }
禁用通知欄需要添加以下權(quán)限并使用系統(tǒng)簽名:
<uses-permission android:name="android.permission.STATUS_BAR"/> <uses-permission android:name="android.permission.DISABLE_STATUS_BAR"/>
網(wǎng)上資料中有提到如果沒(méi)有使用系統(tǒng)簽名則會(huì)報(bào)如下錯(cuò)誤
Caused by: Java.lang.SecurityException: StatusBarManagerService: Neither user 10072 nor current process has android.permission.STATUS_BAR.
在使用系統(tǒng)簽名之前需要
1.在應(yīng)用程序的AndroidManifest.xml中的manifest節(jié)點(diǎn)中加入android:sharedUserId="android.uid.system"
2.修改Android.mk文件,加入LOCAL_CERTIFICATE:=platform
讓程序運(yùn)行到系統(tǒng)進(jìn)程中
Android中使應(yīng)用程序獲得系統(tǒng)簽名權(quán)限方法:
1.需要在Android系統(tǒng)源碼的環(huán)境下用make來(lái)編譯
(1)在應(yīng)用程序的AndroidManifest.xml中的manifest節(jié)點(diǎn)中加入android:sharedUserId="android.uid.system"
(2)修改Android.mk文件,加入LOCAL_CERTIFICATE:=platform
(3)使用mm命令來(lái)編譯生成APK即可
2.不需要在系統(tǒng)源碼環(huán)境下編譯
(1)在應(yīng)用程序的AndroidManifest.xml中的manifest節(jié)點(diǎn)中加入android:sharedUserId="android.uid.system"
(2)使用eclipse編譯出APK文件,此時(shí)的APK文件不可用
(3)用壓縮軟件打開APK文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個(gè)文件
(4)使用目標(biāo)系統(tǒng)的platform密鑰來(lái)重新給APK文件簽名。首先要找到密鑰文件,如"build\target\product\security",下面的platform.pk8和platform.x509.pem兩個(gè)文件,然后用Android提供的SignApk工具來(lái)簽名,該工具源碼在"build\tools\signapk"下,用法是"signapk platform.x509.pem platform.pk8 input.apk output.apk"
原理:
首先加入android:sharedUserId="android.uid.system"
這個(gè)屬性,通過(guò)SharedUserId擁有同一個(gè)User ID的多個(gè)APK可以配置成運(yùn)行在同一個(gè)進(jìn)程中。那么把程序的UID配成android.uid.system,也就是要讓程序運(yùn)行在系統(tǒng)進(jìn)程中,就具有相應(yīng)的權(quán)限了。
但是只是加入U(xiǎn)ID還不夠,這時(shí)候的APK是無(wú)法安裝的,因?yàn)楹灻环3绦蛳胍\(yùn)行在系統(tǒng)進(jìn)程中還要有目標(biāo)系統(tǒng)的platform key,就是上面第二個(gè)方法中的platform.pk8和platform.x509.pem兩個(gè)文件。用這兩個(gè)key簽名后apk才真正可以放入系統(tǒng)進(jìn)程中,第一個(gè)方法的LOCAL_CERTIFICATE:=platform
其實(shí)就是用這兩個(gè)key簽名
這也有一個(gè)問(wèn)題,就是這樣生成的程序只有在原始的Android系統(tǒng)或自己編譯的系統(tǒng)中才可用,因?yàn)檫@樣的系統(tǒng)才可以拿到platform.pk8和platform.x509.pem兩個(gè)文件,要是別家公司的Android系統(tǒng)連安裝都安裝不了。目前只是整理了資料,還沒(méi)有進(jìn)行實(shí)際開發(fā),之后如果有實(shí)際應(yīng)用這部分內(nèi)容,會(huì)將最后結(jié)果整理發(fā)布。
二、如果是系統(tǒng)級(jí)應(yīng)用,也就是手機(jī)廠家植入的應(yīng)用,可以使用disable(int)
的方法來(lái)進(jìn)行屏蔽,參數(shù)如上源碼五個(gè)參數(shù)之一即可。但是如果是在應(yīng)用層上的,disable方法因?yàn)闄?quán)限問(wèn)題無(wú)法使用(如果一定要使用必須具有系統(tǒng)簽名)。這個(gè)時(shí)候可以使用collapse()
方法,現(xiàn)在的小米鎖屏和360鎖屏都是使用該方法,具體代碼如下:
public void disableStatusBar(){ try { Object service = getSystemService("statusbar"); Class<?> claz = Class.forName("android.app.StatusBarManager"); Method expand = claz.getMethod("collapse"); expand.invoke(service); } catch (Exception e) { e.printStackTrace(); } }
重寫activity的onWindowfocuschanged
方法,執(zhí)行如上操作即可。 但是此種方法有嚴(yán)重的適配性問(wèn)題,不同的系統(tǒng)下的回滾方法名不一樣,需要對(duì)所有版本進(jìn)行適配,非常繁瑣。
到此,相信大家對(duì)“Android開發(fā)怎么實(shí)現(xiàn)應(yīng)用層面屏蔽狀態(tài)欄”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:Android開發(fā)怎么實(shí)現(xiàn)應(yīng)用層面屏蔽狀態(tài)欄-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://m.newbst.com/article38/dceppp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、動(dòng)態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、電子商務(wù)、商城網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容