最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開發(fā)實現(xiàn)應用層面屏蔽狀態(tài)欄的方法小結

 更新時間:2017年08月27日 09:13:48   作者:fake-genius  
這篇文章主要介紹了Android開發(fā)實現(xiàn)應用層面屏蔽狀態(tài)欄的方法,結合實例形式分析了Android屏蔽狀態(tài)欄的相關函數(shù)調用、權限控制及函數(shù)重寫等相關操作技巧,需要的朋友可以參考下

本文實例講述了Android開發(fā)實現(xiàn)應用層面屏蔽狀態(tài)欄的方法。分享給大家供大家參考,具體如下:

一、由于StatusBarManager在SDK中沒有提供,所以需要使用反射來調用該類的方法

代碼部分如下:

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();
}

禁用通知欄需要添加以下權限并使用系統(tǒng)簽名:

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

網(wǎng)上資料中有提到如果沒有使用系統(tǒng)簽名則會報如下錯誤

Caused by: Java.lang.SecurityException: StatusBarManagerService: Neither user 10072 nor current process has android.permission.STATUS_BAR.

在使用系統(tǒng)簽名之前需要

1.在應用程序的AndroidManifest.xml中的manifest節(jié)點中加入android:sharedUserId="android.uid.system"
2.修改Android.mk文件,加入LOCAL_CERTIFICATE:=platform

讓程序運行到系統(tǒng)進程中

Android中使應用程序獲得系統(tǒng)簽名權限方法:

1.需要在Android系統(tǒng)源碼的環(huán)境下用make來編譯

(1)在應用程序的AndroidManifest.xml中的manifest節(jié)點中加入android:sharedUserId="android.uid.system"
(2)修改Android.mk文件,加入LOCAL_CERTIFICATE:=platform
(3)使用mm命令來編譯生成APK即可

2.不需要在系統(tǒng)源碼環(huán)境下編譯

(1)在應用程序的AndroidManifest.xml中的manifest節(jié)點中加入android:sharedUserId="android.uid.system"
(2)使用eclipse編譯出APK文件,此時的APK文件不可用
(3)用壓縮軟件打開APK文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件
(4)使用目標系統(tǒng)的platform密鑰來重新給APK文件簽名。首先要找到密鑰文件,如"build\target\product\security",下面的platform.pk8和platform.x509.pem兩個文件,然后用Android提供的SignApk工具來簽名,該工具源碼在"build\tools\signapk"下,用法是"signapk platform.x509.pem platform.pk8 input.apk output.apk"

原理:

首先加入android:sharedUserId="android.uid.system"這個屬性,通過SharedUserId擁有同一個User ID的多個APK可以配置成運行在同一個進程中。那么把程序的UID配成android.uid.system,也就是要讓程序運行在系統(tǒng)進程中,就具有相應的權限了。

但是只是加入UID還不夠,這時候的APK是無法安裝的,因為簽名不符。程序想要運行在系統(tǒng)進程中還要有目標系統(tǒng)的platform key,就是上面第二個方法中的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名后apk才真正可以放入系統(tǒng)進程中,第一個方法的LOCAL_CERTIFICATE:=platform其實就是用這兩個key簽名

這也有一個問題,就是這樣生成的程序只有在原始的Android系統(tǒng)或自己編譯的系統(tǒng)中才可用,因為這樣的系統(tǒng)才可以拿到platform.pk8和platform.x509.pem兩個文件,要是別家公司的Android系統(tǒng)連安裝都安裝不了。目前只是整理了資料,還沒有進行實際開發(fā),之后如果有實際應用這部分內容,會將最后結果整理發(fā)布。

二、如果是系統(tǒng)級應用,也就是手機廠家植入的應用,可以使用disable(int)的方法來進行屏蔽,參數(shù)如上源碼五個參數(shù)之一即可。但是如果是在應用層上的,disable方法因為權限問題無法使用(如果一定要使用必須具有系統(tǒng)簽名)。這個時候可以使用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í)行如上操作即可。 但是此種方法有嚴重的適配性問題,不同的系統(tǒng)下的回滾方法名不一樣,需要對所有版本進行適配,非常繁瑣。

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

相關文章

最新評論

綦江县| 镇巴县| 潍坊市| 林口县| 昭苏县| 镇原县| 巢湖市| 渝北区| 若尔盖县| 德清县| 汾西县| 沛县| 汽车| 德惠市| 保定市| 六枝特区| 文安县| 宣城市| 黄山市| 收藏| 和平县| 景德镇市| 揭阳市| 永州市| 邵东县| 临武县| 凭祥市| 淮安市| 桐梓县| 建湖县| 波密县| 潮州市| 恭城| 武威市| 榕江县| 云南省| 敖汉旗| 桐城市| 蒙山县| 都兰县| 平阴县|