一、AndroidM環境下,在framework層添加代碼會對jar包的package name進行檢查,並提示」unknown package name of class file」怎麼解決?java
產生這個報錯是由於AndroidM新添加了對framework下jar包的package name檢查,解決的方法是在android
build/core/tasks/check_boot_jars/package_whitelist.txt
文件中按照規則將新增代碼添加到白名單git
name檢查的邏輯由build/core/tasks/check_boot_jars/check_boot_jars.py腳本實現ruby
這個害我一下午,翻來拂去的找問題。甚至把out目錄都刪了都不行。 特別手機oem廠商,有時候須要定製,添加jar包就會出這個問題。關鍵是mm能過。所有編譯就不過。ide
二、輸入編輯框中,在一行先輸入幾個漢字,再輸入多個英文字母到換行,在換行的時候,發現最後一個漢字隨英文換到下一行怎麼解決?測試
一行文字包括連續的至少兩個中文字符和若干個英文字符,在換行的時候,下一行的的開始是從上一行最後兩個中文字符中間斷開的
舉例:
如」漢字abcdefghijklmn」
換行結果是:
「漢
字abcdefghijklmn」//這就會影響正常的中文閱讀
這是android 原生設計,最新的代碼也是這樣設計的。默認把每一個漢字字符看成一個換行單元。同時其餘的一些特殊符號也是
空格 / -等
都會被看成獨立的換行單元實現換行
爲了android系統中文使用者的用戶習慣,
如今修改爲:
可執行自動中英文換行,換行位置是從最後一箇中文字符的後面開始,這樣的話就不影響正常的中文閱讀習慣
修改處在:
frameworks/base/core/java/android/text/StaticLayout.java
(j + 1 >= spanEnd || !Character.isDigit(chs[j + 1 - paraStart]))) ||
((c == CHAR_SLASH || c == CHAR_HYPHEN) &&
(j + 1 >= spanEnd || !Character.isDigit(chs[j + 1 - paraStart]))) ||
(c >= CHAR_FIRST_CJK && isIdeographic(c, true) &&
j < spanEnd && isIdeographic(chs[j - paraStart], false))) {
okWidth = w;
ok = j + 1;
這裏的修改其實把換行的開始位置的檢測,從start向後面移動了一位
這樣修改以後的結果是(參考上述例子):
「漢字
abcdefghijklmn」//作到不影響正常的中文閱讀
一樣對於CJK(中日韓)這些象形文字字符都會有這個現象ui
三、如何設置自動獲取時區默認開關?spa
在frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件中,修改以下定義:
true
true爲默認開啓,false爲默認關閉設計
四、如何設置自動旋轉屏幕默認開關?code
在frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件中,修改以下定義:
false
true爲默認開啓,false爲默認關閉。
五、如何修改密碼解鎖最大連續錯誤輸入的密碼次數?
使用密碼解鎖時,連續輸入5次錯誤密碼就會彈出警告並鎖定輸入框不能繼續輸入密碼,而且等待必定的時間以後才能繼續輸入密碼。
下面的修改就可讓用戶連續輸入10次錯誤密碼以後才彈出警告並鎖定輸入框而不能輸入密碼
修改文件frameworks/base/core/java/com/android/internal/widget/LockPatternUtils.java
修改前:
public static final int FAILED_ATTEMPTS_BEFORE_TIMEOUT = 5;
修改後:
public static final int FAILED_ATTEMPTS_BEFORE_TIMEOUT = 10;
值得注意的是,若是修改後測試時使用模塊編譯進行驗證,不只須要編譯該文件所在的模塊frameworks/base,還須要編譯frameworks/base/packages/Keyguard模塊並將這個兩個模塊編譯生成的文件push到對應的目錄中去.
六、如何修改密碼解鎖輸入錯誤密碼次數超過限制以後限制輸入的時間?
在使用密碼解鎖的前提下,解鎖時輸入錯誤密碼次數超過限制時就會限制一段時間不能輸入密碼
下面的修改就可讓用戶連續輸入錯誤密碼超時限制以後等待60s後才能再次輸入密碼
修改文件frameworks/base/core/java/com/android/internal/widget/LockPatternUtils.java
修改前:
public static final long FAILED_ATTEMPT_TIMEOUT_MS = 30000L;
修改後:
public static final long FAILED_ATTEMPT_TIMEOUT_MS = 60000L;
值得注意的是,若是修改後測試時使用模塊編譯進行驗證,不只須要編譯該文件所在的模塊frameworks/base,還須要編譯frameworks/base/packages/Keyguard模塊並將這個兩個模塊編譯生成的文件push到對應的目錄中去
七、如何修改圖案解鎖最小有效鏈接點個數?
在切換到圖案解鎖時建立圖案解鎖密碼時至少須要鏈接的節點個數及進行解鎖時輸入的有效密碼至少須要鏈接的節點個數默認都爲4.
下面的修改就修改圖案解鎖在建立密碼和解鎖輸入密碼時最小鏈接節點個數,該修改會將最小鏈接節點個數從4設置爲2.
修改文件frameworks/base/core/java/com/android/internal/widget/LockPatternUtils.java
修改前:
public static final int MIN_LOCK_PATTERN_SIZE = 4;
修改後:
public static final int MIN_LOCK_PATTERN_SIZE = 2;
值得注意的是,若是修改後測試時使用模塊編譯進行驗證,不只須要編譯該文件所在的模塊frameworks/base,還須要編譯frameworks/base/packages/Keyguard模塊並將這個兩個模塊編譯生成的文件push到對應的目錄中去
八、如何監聽屏幕解鎖事件?
開發後臺服務的時候常常須要對屏幕狀態進行判斷,若是是想要監聽屏幕解鎖事件,能夠在配置裏面註冊action爲
android.intent.action.USER_PRESENT的廣播,則能夠監聽解鎖事件.
一、屏幕解鎖時,發送廣播的代碼:
frameworks\base\packages\keyguard\src\com\android\keyguard\KeyguardViewMediator.java
private static final Intent USER_PRESENT_INTENT = new Intent(Intent.ACTION_USER_PRESENT) .addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); private void sendUserPresentBroadcast() { final UserHandle currentUser = new UserHandle(mLockPatternUtils.getCurrentUser()); mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, currentUser); }
二、在應用中註冊監聽解鎖廣播:
<receiver android:name="com.home.testscreen.MyReceiver"> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver>
九、如何禁用滑動解鎖的menu解鎖功能?
滑動解鎖menu解鎖功能是android的原生設計,平臺4.4的版本已使用代碼將該功能禁用,目前平臺5.0和5.1的版本還沒有禁用該功能。
若是您不想使用該功能可使用以下修改:
修改文件frameworks/base/packages/Keyguard/res/values/config.xml
- <bool name="config_disableMenuKeyInLockScreen">false</bool> + <bool name="config_disableMenuKeyInLockScreen">true</bool>
十、解鎖界面觸摸鎖圖標或滑動到某一功能上會有震動反饋,其強度如何調整
修改frameworks\base\packages\keyguard\res\layout\Keyguard_glow_pad_view_uui.xml以下震動時長便可,0是不震動,數值越大震動感越強
- prvandroid:vibrationDuration="20" + prvandroid:vibrationDuration="4