㈠ 如何調用android隱藏API
對於這個問題,一般可以用java Reflect技術來解決。(一)訪問隱藏public類 例如PolicyManager就是個隱藏類,如果非要在App層訪問它,那麼就可以使用reflect技術: try { Class policyClass = Class.forName("com.android.internal.policy.PolicyManager"); } catch (Exception e) { e.printStackTrace();
}(二)訪問隱藏類的static方法 因為沒有隱藏類的對象實例,所以只能用null去訪問它的static方法或成員: try { Method makenewwindow = policyClass.getMethod("makeNewWindow", new Class[] {Context.class});
Window win = (Window)makenewwindows.invoke(null, context); } catch (Exception e) {
e.printStackTrace();
}(三)訪問public類的私有成員變數 try { Field f = WebSettings.class.getDeclaredField("mBuiltInZoomControls");
f.setAccessible(true); //關閉訪問檢查 f.setBoolean(wSettings, false); //wSettings是WebSettings對象
} catch(Exception e) {
Log.i(LOGTAG, e.toString());
} (四)訪問public類的私有成員變數 try { Method m = WebSettings.class.getDeclaredMethod("getCurrentUserAgent");
m.setAccessible(true); //關閉訪問檢查 m.invoke(wSettings); //wSettings是WebSettings對象
} catch(Exception e) {
Log.i(LOGTAG, e.toString());
} (五)訪問public類的@hide的public成員 try { Object[] args = {Integer.valueOf(5)}; Method m = WebSettings.class.getMethod("setPageCacheCapacity", new Class[]{int.class});
m.invoke(wSettings, args); //wSettings是WebSettings對象
} catch(Exception e) {
Log.i(LOGTAG, e.toString());} try {Method m = WebView.class.getMethod("getWebChromeClient");
Object ob = m.invoke(mSubView); WebChromeClient client = (WebChromeClient) ob;
} 利用反射技術的優點是靈活,能解決一些訪問限制的問題,能夠在不兼容的系統捕獲異常,而使程序不至於崩潰;缺點是步驟比較多,需要熟悉要調用的類、方法名稱訪問屬性,大量使用反射會大大增加代碼,對代碼的健壯性不利。一般被hide的類或成員可能還不太成熟穩定,所以不便公開。 另外一種解決以上訪問問題的方法是導入全編譯的classes.jar包,這種方法比較簡單。
㈡ Android應用開發中如何使用隱藏AP
其中很大的原因就是Android系統本身還在不斷的進化發展中。從1.0、1.1到現在即將問世的Android 2.3.4。 這些隱藏的API本身可能是不穩定的,所以,使用隱藏API,意味著程序更差的兼容性。 如果要我給出建議的話,最好還是不要使用隱藏的API。不過有時為了實現Android應用某些特殊的功能或者效果,隱藏的API往往能發揮意想不到的作用。這些API具體能做些什麼事,我就不在這里舉例了。正好,如果你不知道隱藏API能做什麼的話,那麼還是盡早放棄使用它們吧……
不想長篇大論,直接進入正題吧。使用隱藏API主要有兩種辦法:一是我在《Java反射機制的學習》一文中提到的反射的方法得到隱藏API;二是使用源碼編譯時生成的全編譯的jar包classes.jar。
使用反射的方式,在這里就不詳細介紹了,具體見《Java反射機制的學習》。利用反射機制使用隱藏API的方法的優點是靈活,能夠在不兼容的系統捕獲異常,而使程序不至於崩潰;缺點是過程太繁雜,而且對於隱藏類的繼承等很難實現。如果需要大量使用隱藏API,使用反射無疑會讓程序員很煩的。
這篇文章主要要介紹的就是通過導入全編譯的classes.jar包,來實現對隱藏API的使用。這種方法實現簡單,程序員編程也簡單,就像是那些隱藏的API在SDK中變得可見了一樣。它的缺點就是兼容性問題,希望使用者引起重視,在使用時考慮清楚。
編譯Android框架源碼後,在源碼路徑下會生成out文件夾,在這個文件夾下的out"target"common"obj"JAVA_LIBRARIES"framework_intermediates"路徑下,會生成全編譯的jar庫classes.jar。你需要做的就是將這個jar庫導入到你的工程中。
在導入classes.jar過程中,有可能會出現兩個問題(我是使用eclipse開發環境的,所以僅對此環境會遇到的問題進行說明)。
問題一是按導入其他jar的方式導入此jar庫,發現編譯很慢,有時甚至無法編譯成功,eclipse崩潰或者提示「java.lang.OutOfMemoryError: Java Heap Space」錯誤。這個問題,可能是由於jar太大的原因吧,網上說改eclipse.ini里的參數,個人試了下,似乎沒有什麼作用。我的做法是在eclipse中新建自定義的library,然後將classes.jar放在library中。Android工程添加library,就像使用SDK一樣。這樣可以很好地解決這個問題。具體如何新建自定義的library我就不詳述了,不知道的朋友自己搜索下或者摸索下,很簡單的。
問題二是已經正確導入了jar庫,卻發現還是找不到隱藏的API。這個的原因是Build class path order不對,具體說就是android.jar和classes.jar的導入順序不對。應該將classes.jar的順序放在android.jar之前,具體調節Build class path order的地方就在properties -> Java Build Path -> Order and Export.。
㈢ 如何得到包含隱藏API的Android類庫
於問題般用Java Reflect技術解決()訪問隱藏public類 例PolicyManager隱藏類非要App層訪問使用reflect技術: try { Class policyClass = Class.forName("com.android.internal.policy.PolicyManager"); } catch (Exception e) { e.printStackTrace(); }(二)訪問隱藏類static 沒隱藏類象實例所能用null訪問static或員: try { Method makenewwindow = policyClass.getMethod("makeNewWindow", new Class[] {Context.class}); Window win = (Window)makenewwindows.invoke(null, context); } catch (Exception e) { e.printStackTrace(); }(三)訪問public類私員變數 try { Field f = WebSettings.class.getDeclaredField("mBuiltInZoomControls"); f.setAccessible(true); //關閉訪問檢查 f.setBoolean(wSettings, false); //wSettingsWebSettings象 } catch(Exception e) { Log.i(LOGTAG, e.toString()); } (四)訪問public類私員變數 try { Method m = WebSettings.class.getDeclaredMethod("getCurrentUserAgent"); m.setAccessible(true); //關閉訪問檢查 m.invoke(wSettings); //wSettingsWebSettings象 } catch(Exception e) { Log.i(LOGTAG, e.toString()); } (五)訪問public類@hidepublic員 try { Object[] args = {Integer.valueOf(5)}; Method m = WebSettings.class.getMethod("setPageCacheCapacity", new Class[]{int.class}); m.invoke(wSettings, args); //wSettingsWebSettings象 } catch(Exception e) { Log.i(LOGTAG, e.toString());} try {Method m = WebView.class.getMethod("getWebChromeClient"); Object ob = m.invoke(mSubView); WebChromeClient client = (WebChromeClient) ob; } 利用反射技術優點靈能解決些訪問限制問題能夠兼容系統捕獲異使程序至於崩潰;缺點步驟比較需要熟悉要調用類、名稱訪問屬性量使用反射增加代碼代碼健壯性利般hide類或員能太熟穩定所便公 另外種解決訪問問題導入全編譯classes.jar包種比較簡
㈣ 如何使用android系統隱藏hide的類和方法
首先編譯Android的系統,其實直接編譯framework也行,在編譯完成後在out\target\common\obj\JAVA_LIBRARIES\framework_intermediates下面有個classes.jar的文件,我們就需要這個jar文件。
將classes.jar放在某個文件夾下面,然後將其解壓,我們可以得到一個android文件夾和META_INF文件夾,
找到我們常使用的sdk版本目錄下面的android.jar,比如:sdk\platforms\android-19\android.jar,將其放在某個文件夾下面解壓。解壓後會得到很多個文件夾,包括:android,java,com,javax,org,META_INF等文件夾以及resources.arsc文件。
將上面classes.jar解壓出來的android文件夾下面的所有文件,復制到android.jar解壓出來的android文件夾裡面,並覆蓋相同文件名的文件及文件夾。其實你注意上面的兩個android文件夾內容大致一樣。
下面到了最關鍵的一步,就是把現有的文件夾中的classes打包成java文件,首先在解壓android.jar的根目錄下面打開cmd命令窗口,輸入命令jar cvfm android.jar META-INF/MANIFEST.MF ./ 。如果找不到jar,請先配置環境變數。接著就看到這個打包的詳細信息在控制台輸出。關於jar的詳細命令參數請看這里jar命令詳解
順利的話,就可以得到一個android.jar 文件了,然後在把得到的jar文件解壓看看是否和原來的結構一直,不要多打包一層文件目錄喲,不然肯定沒辦法用的,如果正確的話,將替換我們sdk中的android.jar文件。例如替換:sdk\platforms\android-19\android.jar文件。
然後測試,打開eclipse,隨便在一個android工程中的java文件中輸入SurfaceControl看看系統是否會提示我們導入SurfaceControl包,注意4.3以上才有SurfaceControl喲,如果沒有則看看檢測上面哪一步是否出錯了。
易錯點總結:
要保證第一步生成的classes.jar文件是正確的,有的系統打包的classes默認是在classes.odex中,如果解壓出來沒有android文件夾基本就是這個問題了。
是否用classes.jar解壓出來的android文件夾完全覆蓋android.jar解壓出來的android文件夾下面的內容。因為隱藏的方法都是在classes.jar解壓出來的android文件夾下面。
在打包命令的時候,文件夾跟目錄錯誤,導致打包出來的jar多一層文件夾,或者少一層(少打包其他文件夾),大概android.jar 大小有20M左右。
jar 命令參數有誤,請具體參看jar方法參數的使用方法和含義。
㈤ 「android系統」的手機怎麼隱藏圖片和視頻
有以下方法:
把視頻或者圖片放進文件夾里,並且文件夾名字前面加一個【】就好了 。
也可以:下載一個文件管理軟體 在裡面勾選【屬性】 改為隱藏
360安全衛士 ,創建私密空間 ,然後將文件夾拖進去。
㈥ 安卓手機 怎樣隱藏應用程序!!!!
這個只要你沒有卸載的話,都會在設置 管理應用 中找到的。
再者其他的途徑也能啟動隱藏的軟 如換個桌面 xperia主頁就可以隱藏應用抽屜程序,但可以在桌面上菜單的應用程序里添加到桌面。
最好還是給程序偽裝或加密。
偽裝可以換個名字和圖標 加密的軟體有很多。
需要root xposed框架 應用圖標名字隨心換:xSuite模塊 maxlock模塊
maxlock程序鎖可以給同一個應用的不同行為上鎖,支持pin 密碼 圖案 敲擊碼 只有卸載或凍結了才會失去對加密程序的保護,通過結束程序是做不到的。
maxlock模塊應用;圖片依次是 1主界面 可以設置背景圖片 顯示系統應用等;2應用密碼或假死設置其中activities是對程序的行為上鎖,可以只限制部分功能,比如設置中的時間、語言和輸入法的鎖定;3自定義密碼的種類;4密碼鎖的界面;5圖案鎖的界面,看到的背景就是設置的自己喜歡的。
㈦ 安卓幾開始android系統文件被隱藏了
安卓10。
要顯示已隱藏的文件夾或文件,可使用Root Explorer這類root許可權文件管理軟體,找到已隱藏的文件或文件夾,選擇「重命名」,去掉前面的「.」就可以了。另外要說的是,在Windows系統中,不能建立以「.」開頭的文件或文件夾。所以這種隱藏文件夾的方法只能在Android系統手機上操作,而利用這種方法隱藏的文件夾在手機以U盤模式連接電腦後,在Windows系統中是可見的,希望大家在使用中注意。
㈧ android如何調用系統的隱藏方法
比如如果要在安卓4.0以上顯示菜單的圖標
publicvoidenableMenuIcon(android.widget.Menumenu){
if(android.os.Build.VERSION.SDK_INT<14)return;//系統在4.0以下時禁用
try{
Classclz=Class.forName("com.android.internal.view.menu.MenuBuilder");//找到要調用的方法所在類
java.lang.reflect.Methodm=clz.getDeclaredMethod("setOptionalIconsVisible",boolean.class);//找到指定參數類型和參數數量的方法名
m.setAccessible(true);//設置可訪問該域
m.invoke(menu,true);//模擬這個動態的對象進行調用該方法,並附加方法參數
}catch(Throwablee){}
}