androidd 程序默认安装位置和数据存储位置(公用和私用)

默认安装位置:

android App 安装到外置SD卡中,缓解手机内置内存的压力:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.org.hl.john.androidstt"
    android:installLocation="internalOnly">
// 在manifest中加入android:installLocation="preferExternal" 安装到外置SD卡上;
    // 加入android:installLocation="internalOnly"安装到自身内存上
    //或者直接用android:installLocation="auto" 根据系统自行选择

如果是直接安装到外置SD卡上必须获得SD卡权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

数据储存位置:

把数据都储存到SD卡中,缓解自身内存压力

首先判断SD卡是否可用,检测他的状态:

 /**
     * 判断内存卡是否可写
     * @return true 可以写入, false 不可写
     */
    private boolean isExternalStorageWritable(){
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)){
            return true;
        }
        return false;
    }

    /**
     * 判断内存卡是否可读
     * @return true 可读 false 不可读
     */
    private boolean isExternalStorageReadable(){
        String state = Environment.getExternalStorageState();
        if (state.equals(Environment.MEDIA_MOUNTED)||state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)){
            return true;
        }
        return false;
    }

然后根据个人需要储存的数据把数据存储到一个私有或者公用的位置:

  /**
     * 保存到内存中
     * @param context 上下文
     * @param string 传入要保存的内容
     */
    private void saveFile(Context context,String string){
        File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS) + "/tad.txt" );
        //getExternalFilesDir()是存储到一个私有的地方,在应用程序卸载时一起删除(主要是看存储什么数据);
        // getExternalStoragePublicDirectory()存储到一个指定的位置,可供大家使用(照片,音乐等等),在应用卸载时不会删除,如果不用,可以自己去删了就行了。
        //Environment.DIRECTORY_DOCUMENTS是你所存储的文件类型,会自行给你在应用包下建一个文件夹。
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String strContent = string + "
";
        try {
            RandomAccessFile raf = new RandomAccessFile(file, "rwd");
            //RandomAccessFile 控制文件的读写速度快 写这类文件还不错。
            raf.seek(file.length());
//seek(index) 移动存储位置,比如需要添加一个数据到这个字符串的第五位则用 seek(4) raf.write(strContent.getBytes()); raf.close();
//使用完关闭 }
catch (Exception e) { Log.e("TestFile", "Error on write File:" + e); } }

ok 完工!

原文地址:https://www.cnblogs.com/android-host/p/5291876.html