編輯:關於Android編程
最近在處理SD卡的讀寫問題,本地Elipse能跑的程序提交到服務器上的時候,報錯,找不到import的類,還有一些方法也是找不到,利用sourceInsight搜了源碼發現都是用了@hide標記的類和方法。
/** * Description of a storage volume and its capabilities, including the * filesystem path where it may be mounted. * * @hide */ public class StorageVolume implements Parcelable {
進入正題,當我們的程序中需要使用到這些方法才能實現我們的功能的時候,我們可以有三種方法去實現。
1、直接將@hide標記去掉,將重新編譯了的android.jar包換掉;
不過強烈的建議不要這樣做,別人隱藏起來的類或者方法肯定是不安全的,如果你把@hide放出來可能引起一些程序不可預知的錯誤。
2、利用反射機制使用@hide方法,這種方法在網上看到一篇不錯的,簡單易懂,要深入的自己再到網上搜
www.2cto.com
3、修改系統文件
3.1修改android.mk文件
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 LOCAL_STATIC_JAVA_LIBRARIES += android-ex-camera2-portability LOCAL_STATIC_JAVA_LIBRARIES += xmp_toolkit LOCAL_STATIC_JAVA_LIBRARIES += glide LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_SRC_FILES += $(call all-java-files-under, src_pd) LOCAL_SRC_FILES += $(call all-java-files-under, src_pd_gcam) LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res $(LOCAL_PATH)/res_p include $(LOCAL_PATH)/version.mk LOCAL_AAPT_FLAGS := --auto-add-overlay --version-name $(version_name_package) --version-code $(version_code_package) LOCAL_PACKAGE_NAME := Camera2 #LOCAL_SDK_VERSION := current LOCAL_CERTIFICATE := platform LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_PROGUARD_ENABLED := disabled LOCAL_JNI_SHARED_LIBRARIES := libjni_tinyplanet libjni_jpegutil include $(BUILD_PACKAGE) include $(call all-makefiles-under, $(LOCAL_PATH))將紅色的注釋掉。LOCAL_SDK_VERSION 用於指定該APK項目所需的SDK版本,current代表了當前android源碼的版本,如果注釋掉就會使應用程序可以訪問被@hide的api
3.2將LOCAL_SDK_VERSION 注釋掉之後提到服務器編譯出現了代碼混淆錯誤。這個時候可以在android.mk文件中將LOCAL_PROGUARD_ENABLED := disabled加上。LOCAL_PROGUARD_ENABLED := disabled不使用代碼混淆的工具進行代碼混淆,如果不設置,默認使用LOCAL_PROGUARD_ENABLED := full.即將該工程代碼全部混淆。
在Android中經常會遇到需要使用Dialog風格彈出框的activity,首先我們可能會首先想到的是在XML布局文件中設置android:layout_height=
View的滑動沖突指的是當有內外兩層View同時可以滑動的時候,這個時候就會產生滑動沖突。那麼應該如何解決滑動呢,其實要用到View的事件分發機制。View的滑動沖突主要
View布局告一段落,從本篇開始View事件相關分析,今天分析的是View的事件分發機制(PS:本篇文章中源碼均是android 6.0,請知曉)View 事件的分發機制
文件存儲和SharePreference存儲以及數據存儲一般為了安全,最好用於當前應用程序中訪問和存儲數據。內容提供器(Content Provider)主要用於在不同的