android 双SD卡切换(SD SWAP) 方案,如何恢复“设置->存储->默认存储器”的用户选择功...


修改涉及到的文件:
- 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值