android 雙SD卡切換 SD SWAP 方案,如何恢復 設定- 儲存- 預設儲存器 的使用者選擇功
阿新 • • 發佈:2018-11-15
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
修改涉及到的檔案:
- package/app/settings/。。。/deviceinfo/Memory.java:恢復“預設儲存器”的選擇功能
- StorageManager.java的getDefaultPath()方法:取得“預設儲存器”的實際路徑
針對ICS2版本:
1. 修改package/app/settings/。。。/deviceinfo/Memory.java
修改點:下面的程式碼可能跟貴司現有的程式碼不一致,但思路是一樣的,即: 把原來通過FeatureOption.MTK_SWAP_STATIC_MODE包著的“移除預設儲存器選擇功能”的程式碼段disable掉,如下:
public void onCreate(Bundle icicle) {
. . . . . .
if(FeatureOption.MTK_2SDCARD_SWAP) {
//把判斷條件裡的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
if(FeatureOption.MTK_SWAP_STATIC_MODE) à false
{
getPreferenceScreen().removePreference(mDefaultWriteCategory);
}
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ACTION_DYNAMIC_SD_SWAP);
getActivity().registerReceiver(mDynSwapReceiver, mFilter);
}
}
. . . . . .
public void onResume() {
....
// 把判斷條件裡的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
// if(!(FeatureOption.MTK_2SDCARD_SWAP && FeatureOption.MTK_SWAP_STATIC_MODE)) { à false
dynamicShowDefaultWriteCategory();
}
---------
public boolean onPreferenceChange(Preference preference, Object newValue){
//把判斷條件裡的FeatureOption.MTK_SWAP_STATIC_MODE修改成false if(FeatureOption.MTK_2SDCARD_SWAP && FeatureOption.MTK_SWAP_STATIC_MODE) { à false
return false;
}
if (preference != null && preference instanceof RadioButtonPreference) {
if(mDeafultWritePathPref != null) {
mDeafultWritePathPref.setChecked(false);
}
mStorageManager.setDefaultPath(preference.getKey());
mDeafultWritePathPref = (RadioButtonPreference)preference;
return true;
}
return false;
}
private final Runnable mUpdateRunnable = new Runnable() {
public void run() {
//把判斷條件裡的FeatureOption.MTK_SWAP_STATIC_MODE修改成false
if(!(FeatureOption.MTK_2SDCARD_SWAP && FeatureOption.MTK_SWAP_STATIC_MODE) ) { à false
dynamicShowDefaultWriteCategory();
}
}
};
. . . . . .
2. StorageManager.java
把getDefaultPath()方法改成以下這樣:
public static String getDefaultPath() {
String path = DEFAULT_PATH;
try {
path = SystemProperties.get(PROP_SD_DEFAULT_PATH, DEFAULT_PATH);
} catch (IllegalArgumentException e) {
Log.e(TAG, "IllegalArgumentException when get default path:"+e);
}
Log.i(TAG, "getDefaultPath path="+path);
return path;
}:
. . . . . .
針對ICS版本:
1. 修改package/app/settings/。。。/deviceinfo/Memory.java
下面的程式碼可能跟貴司現有的程式碼不一致,但思路是一樣的,即: 把原來通過FeatureOption. MTK_2SDCARD_SWAP包著的“移除預設儲存器選擇功能”的程式碼段enable,如下:
主要有以下修改點:
// 把判斷條件裡的!FeatureOption.MTK_2SDCARD_SWAP修改成true,讓程式碼可以被執行到
if(!FeatureOption.MTK_2SDCARD_SWAP) { à true
dynamicShowDefaultWriteCategory();
}
. . . . . .
public boolean onPreferenceChange(Preference preference, Object newValue){
//把判斷條件裡的FeatureOption.MTK_2SDCARD_SWAP修改成false,讓程式碼不要被執行到
if(FeatureOption.MTK_2SDCARD_SWAP) { à false
return false;
}
. . . . . .
//把判斷條件裡的FeatureOption.MTK_2SDCARD_SWAP修改成false,讓程式碼不要被執行到
if(FeatureOption.MTK_2SDCARD_SWAP) { à false
getPreferenceScreen().removePreference(mDefaultWriteCategory);
}
. . . . . .
2. StorageManager.java
把getDefaultPath()方法改成以下這樣:
public static String getDefaultPath() {
String path = DEFAULT_PATH;
try {
path = SystemProperties.get(PROP_SD_DEFAULT_PATH, DEFAULT_PATH);
} catch (IllegalArgumentException e) {
Log.e(TAG, "IllegalArgumentException when get default path:"+e);
}
Log.i(TAG, "getDefaultPath path="+path);
return path;
}