MTK(Android N)设置SDCard为默认存储
来源:互联网 发布:帝国cms好还是织梦好 编辑:程序博客网 时间:2024/06/06 03:54
思路:当系统将所有存储挂载完毕,然后调用StorageManagerEx.setDefaultPath(path)设置默认存储,当用户手动改变以后就跟随用户设置。
diff --git a/packages/apps/Settings/src/com/mediatek/settings/deviceinfo/StorageSettingsExts.java b/packages/apps/Settings/src/com/mediatek/settings/deviceinfo/StorageSettingsExts.javaold mode 100644new mode 100755index 445c7d5..0944468--- a/packages/apps/Settings/src/com/mediatek/settings/deviceinfo/StorageSettingsExts.java+++ b/packages/apps/Settings/src/com/mediatek/settings/deviceinfo/StorageSettingsExts.java@@ -20,6 +20,9 @@ import com.mediatek.storage.StorageManagerEx; import java.util.ArrayList; import java.util.Collections; import java.util.List;+/*gxk@Revo modify SDCard to default storage 20170818*/+import android.provider.Settings;+/*End of by gxk*/ public class StorageSettingsExts { private static final String TAG = "StorageSettings";@@ -114,6 +117,11 @@ public class StorageSettingsExts { } StorageManagerEx.setDefaultPath(preference.getKey()); Log.d(TAG, "Set default path : " + preference.getKey());+/*gxk@Revo modify SDCard to default storage 20170818*/+ if (com.android.featureoption.FeatureOption.PRJ_FEATURE_REVO_B_SET_DEFAULT_STORAGE){+ Settings.System.putInt(mActivity.getContentResolver(), "isUserSet", 1);+ }+/*End of by gxk*/ mDeafultWritePathPref = (RadioButtonPreference) preference; return true; }diff --git a/packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver.java b/packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver.javaold mode 100644new mode 100755index 9c9df73..15b2d93--- a/packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver.java+++ b/packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver.java@@ -40,6 +40,13 @@ import android.os.storage.StorageVolume; import android.os.SystemProperties; import android.preference.PreferenceManager; import android.provider.MediaStore;+/*gxk@Revo modify SDCard to default storage 20170818*/+import com.mediatek.storage.StorageManagerEx;+import java.util.ArrayList;+import java.util.List;+import android.provider.Settings;+import com.android.featureoption.FeatureOption;+/*End of by gxk*/ public class MediaScannerReceiver extends BroadcastReceiver {@@ -58,10 +65,19 @@ public class MediaScannerReceiver extends BroadcastReceiver static boolean sIsShutdown = !"def_value".equals(SystemProperties.get( "sys.shutdown.requested", "def_value")); private static final String DEVICE_MOUNT_BEFORE_BOOT = "dev.mount_before_boot";+/*gxk@Revo modify SDCard to default storage 20170818*/+ private StorageManager storageManager;+ private int isUserSet = 0;+/*End of by gxk*/ @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction();+/*gxk@Revo modify SDCard to default storage 20170818*/+ storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);+ if (FeatureOption.PRJ_FEATURE_REVO_B_SET_DEFAULT_STORAGE)+ isUserSet = Settings.System.getInt(context.getContentResolver(), "isUserSet", 0);+/*End of by gxk*/ MtkLog.v(TAG, "onReceive action = " + action); if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { MtkLog.v(TAG, "onReceive BOOT_COMPLETED, begin to scan internal and external storage.");@@ -192,7 +208,7 @@ public class MediaScannerReceiver extends BroadcastReceiver * @return */ private boolean isAllStorageMounted(Context context) {- StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);+ // StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); StorageVolume[] ExternalVolumeList = storageManager.getVolumeList(); for (StorageVolume storageVolume : ExternalVolumeList) { String path = storageVolume.getPath();@@ -204,6 +220,18 @@ public class MediaScannerReceiver extends BroadcastReceiver } return true; }+/*gxk@Revo modify SDCard to default storage 20170818*/+ private StorageVolume[] getDefaultWriteDiskList() {+ List<StorageVolume> storageVolumes = new ArrayList<StorageVolume>();+ StorageVolume[] volumes = storageManager.getVolumeList();+ for (StorageVolume volume : volumes) {+ if (Environment.MEDIA_MOUNTED.equals(storageManager.getVolumeState(volume.getPath()))) {+ storageVolumes.add(volume);+ }+ }+ return storageVolumes.toArray(new StorageVolume[storageVolumes.size()]);+ }+/*End of by gxk*/ /// M: get main handler to do check whether all storage have been mounted every CHECK_INTERVAL time. private Handler getHandler() {@@ -221,6 +249,20 @@ public class MediaScannerReceiver extends BroadcastReceiver scan(context, MediaProvider.EXTERNAL_VOLUME); removeCallbacksAndMessages(null); sHandler = null;+/*gxk@Revo modify SDCard to default storage 20170818*/+ if (FeatureOption.PRJ_FEATURE_REVO_B_SET_DEFAULT_STORAGE &&+ isUserSet == 0 && isAllStorageMounted(context)) {+ StorageVolume[] availableVolumes = getDefaultWriteDiskList();+ for (StorageVolume volume : availableVolumes) {+ String path = volume.getPath();+ MtkLog.v(TAG, "<getHandler> setDefaultPath = " + path);+ if (path != null && !"/storage/emulated/0".equals(path)) {+ StorageManagerEx.setDefaultPath(path);+ break;+ }+ }+ }+/*End of by gxk*/ } else { MtkLog.v(TAG, "Some storage has not been mounted, wait it mounted until time out."); Message next = obtainMessage(msg.what, waitTime + CHECK_INTERVAL, -1, msg.obj);
阅读全文
0 0
- MTK(Android N)设置SDCard为默认存储
- Android MTK 设置默认启动 Launcher
- 修改Android手机的默认安装位置 为SDCard手机卡
- android 设置apk文件默认安装sdcard中
- android 读取sd卡(sdcard)图片设置为按钮背景(Button背景设置)代码
- android SDCard存储信息
- Android之SDcard存储
- Android关于SDCard存储
- 更改 MTK 设置 > 存储
- 设置内部sdcard存储下限
- Android系统之路(初识MTK) ------ 设置系统默认语言/客制化可选语言/设置默认时区
- android数据存储(二)之使用SDCard存储
- 如何把"设置--安全--未知来源“默认打开(mtk)
- 【Android】数据存储之SDcard
- Android存储之操作sdcard
- 获取android SDCard存储大小
- 获取android SDCard存储大小
- Android存储数据到sdcard
- 1056:明明的随机数
- iOS The 'Apple Developer Program License Agreement' has been updated. In order to access certain mem
- Java NIO系列教程(五) 通道之间的数据传输
- C++虚函数简单总结
- hi,my first
- MTK(Android N)设置SDCard为默认存储
- java虚拟机(一)--内存区的划分
- Angular2简单使用
- VMware更改虚拟机网卡的MAC地址
- Matlab图像剪切,超出图像区域指定颜色填充
- c++11 map和unordered_map
- SSM框架配置多数据源连接不同的数据库
- java util工具类
- Java NIO系列教程(六) Selector