精华内容
下载资源
问答
  • 发现了一个问题,就是当插入大小分别128G、64G、32G、16G、8G、4G的SD,格式化SD作为内部存储后,在设置下128G的SD合并总容量显示256G、64G的SD显示128G,32G的SD显示32G、16G的SD显示32G、8G的SD...

    发现了一个问题,就是当插入大小分别为128G、64G、32G、16G、8G、4G的SD卡,格式化SD卡作为内部存储后,在设置下128G的SD卡合并总容量显示256G、64G的SD卡显示128G,32G的SD卡显示32G、16G的SD卡显示32G、8G的SD卡显示8G、4G的SD卡显示4G。

    看到这问题,当即想到的就是显示问题,因为google之前计算内存的方法有的是按照1024的,有的是按照1000的,很乱,不出问题才怪,后面的9.0、10.0就好多了

    不多说什么,直接上代码

     /**
         * Round the given size of a storage device to a nice round power-of-two
         * value, such as 256MB or 32GB. This avoids showing weird values like
         * "29.5GB" in UI.
         *
         * @hide
         */
        public static long roundStorageSize(long size) {
            long val = 1;
            long pow = 1;
            // Modify by HZH on 2019/12/6 start
            // while ((val * pow) < size) {
            long realpow = 1;
            while ((val * realpow) < size) {
                val <<= 1;
                if (val > 512) {
                    val = 1;
                    pow *= 1000;
                    realpow *= 1024;
                }
            }
            // Modify by HZH on 2019/12/6 end
            return val * pow;
        }

    按照上面修改即可,根本还是换算单位的问题

    展开全文
  • 将用户的设置信息,以实体类媒介,保存到内部存储或者SD的文件里。再次打开应用时,程序会自动调用文件中实体类,并对设置信息进行设置,使其恢复到用户最终保存的状态。 首先,创建一个实体类(这里要实现 ...

    将用户的设置信息,以实体类为媒介,保存到内部存储或者SD卡的文件里。再次打开应用时,程序会自动调用文件中实体类,并对设置信息进行设置,使其恢复到用户最终保存的状态。

    首先,创建一个实体类(这里要实现 Serializable 接口,即序列化,这样才能让类在内存中传递):

    public class SettingData implements Serializable{
        private boolean titleShow;
        private String textSize;
        private boolean notify;
        private boolean plug;
        private boolean autoRead;
        private boolean transmit;
     
        public SettingData() {
        }
     
        public SettingData(boolean titleShow, String textSize, boolean notify, boolean plug, boolean autoRead, boolean transmit) {
            this.titleShow = titleShow;
            this.textSize = textSize;
            this.notify = notify;
            this.plug = plug;
            this.autoRead = autoRead;
            this.transmit = transmit;
        }
     
        public boolean isTransmit() {
            return transmit;
        }
     
        public void setTransmit(boolean transmit) {
            this.transmit = transmit;
        }
     
        public boolean isTitleShow() {
            return titleShow;
        }
     
        public void setTitleShow(boolean titleShow) {
            this.titleShow = titleShow;
        }
     
        public String getTextSize() {
            return textSize;
        }
     
        public void setTextSize(String textSize) {
            this.textSize = textSize;
        }
     
        public boolean isNotify() {
            return notify;
        }
     
        public void setNotify(boolean notify) {
            this.notify = notify;
        }
     
        public boolean isPlug() {
            return plug;
        }
     
        public void setPlug(boolean plug) {
            this.plug = plug;
        }
     
        public boolean isAutoRead() {
            return autoRead;
        }
     
        public void setAutoRead(boolean autoRead) {
            this.autoRead = autoRead;
        }
    }
    

    最后,就是Activity啦,其功能实现为设置好后点击右上角“完成”,即可保存设置内容。

    方法一:通过SharedPreferences

    ,保存设置内容:
    public class Setting2Activity extends AppCompatActivity {
     
        private CheckBox titleShow,notify,plug,autoRead,transmit;
        private TextView setting,textSize;
        private LinearLayout text;
        private SharedPreferences sp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_setting2);
            titleShow = (CheckBox) findViewById(R.id.titleShow);
            notify = (CheckBox) findViewById(R.id.notify);
            plug = (CheckBox) findViewById(R.id.plug);
            autoRead = (CheckBox) findViewById(R.id.autoRead);
            transmit = (CheckBox) findViewById(R.id.transmit);
            setting = (TextView) findViewById(R.id.setting);
            textSize = (TextView) findViewById(R.id.textSize);
            text = (LinearLayout) findViewById(R.id.text);
     
            //开启设置以保存的设置
            settingStart();
     
            //监听字体大小的改变,选择方式:对话框
            text.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(Setting2Activity.this);
                    builder.setTitle("选择字体大小");
                    builder.setIcon(R.mipmap.ic_launcher);
                    final String[] items = {"小","中","大"};
                    int i;
                    for(i=0;i<items.length;i++ ){
                        if(items[i].equals(textSize.getText())){
                            break;
                        }
                    }
                    builder.setSingleChoiceItems(items,i, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(getBaseContext(),items[which].toString(),Toast.LENGTH_SHORT).show();
                            textSize.setText(items[which].toString());
                            dialog.dismiss();
                        }
                    });
                    builder.setCancelable(true);
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();
                }
            });
     
            sp = getSharedPreferences("mysetting.txt", Context.MODE_PRIVATE);
            setting.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //存入数据
                    SharedPreferences.Editor editor = sp.edit();
                    editor.putBoolean("titleShow",titleShow.isChecked());
                    editor.putString("textSize",textSize.getText().toString());
                    editor.putBoolean("notify",notify.isChecked());
                    editor.putBoolean("plug",plug.isChecked());
                    editor.putBoolean("autoRead",autoRead.isChecked());
                    editor.putBoolean("transmit",transmit.isChecked());
                    editor.commit();
                    Toast.makeText(getBaseContext(),"保存成功",Toast.LENGTH_SHORT).show();
                }
            });
     
        }
     
        //启动函数
        public void settingStart(){
            sp = getSharedPreferences("mysetting.txt", Context.MODE_PRIVATE);
            if(sp.getString("textSize","").equals("")){
                Toast.makeText(getBaseContext(),"还没有预设值",Toast.LENGTH_SHORT).show();
                return;
            }
            titleShow.setChecked(sp.getBoolean("titleShow",false));
            textSize.setText(sp.getString("textSize",""));
            notify.setChecked(sp.getBoolean("notify",false));
            plug.setChecked(sp.getBoolean("plug",false));
            autoRead.setChecked(sp.getBoolean("autoRead",false));
            transmit.setChecked(sp.getBoolean("transmit",false));
        }
    }
    

    方法二:实体类保存,并将其传到SD卡文件中:

    public class SettingActivity extends AppCompatActivity {
     
        private CheckBox titleShow,notify,plug,autoRead,transmit;
        private TextView setting,textSize;
        private LinearLayout text;
        private SettingData settingData;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_scroll1);
            titleShow = (CheckBox) findViewById(R.id.titleShow);
            notify = (CheckBox) findViewById(R.id.notify);
            plug = (CheckBox) findViewById(R.id.plug);
            autoRead = (CheckBox) findViewById(R.id.autoRead);
            transmit = (CheckBox) findViewById(R.id.transmit);
            setting = (TextView) findViewById(R.id.setting);
            textSize = (TextView) findViewById(R.id.textSize);
            text = (LinearLayout) findViewById(R.id.text);
     
            //开启设置以保存的设置
            settingStart();
     
            //监听字体大小的改变,选择方式:对话框
            text.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
                    builder.setTitle("选择字体大小");
                    builder.setIcon(R.mipmap.ic_launcher);
                    final String[] items = {"小","中","大"};
                    int i;
                    for(i=0;i<items.length;i++ ){
                        if(items[i].equals(textSize.getText())){
                            break;
                        }
                    }
                    builder.setSingleChoiceItems(items,i, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(getBaseContext(),items[which].toString(),Toast.LENGTH_SHORT).show();
                            textSize.setText(items[which].toString());
                            dialog.dismiss();
                        }
                    });
                    builder.setCancelable(true);
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();
                }
            });
     
            //监听“完成”
            setting.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    settingData = new SettingData(titleShow.isChecked(),
                            textSize.getText().toString(),notify.isChecked(),
                            plug.isChecked(),autoRead.isChecked(),transmit.isChecked());
                    FileOutputStream fos = ;
                    ObjectOutputStream oos = ;
                    String state = Environment.getExternalStorageState();
                    if(!state.equals(Environment.MEDIA_MOUNTED)){
                        Toast.makeText(getBaseContext(),"请检查SD卡",Toast.LENGTH_SHORT).show();
                        return;
                    }
                    File file = Environment.getExternalStorageDirectory();
                    try {
                        File myfile = new File(file.getCanonicalPath(),"/设置.txt");
                        fos = new FileOutputStream(myfile);
                        oos = new ObjectOutputStream(fos);
                        oos.writeObject(settingData);
                        Toast.makeText(getBaseContext(),"设置成功",Toast.LENGTH_SHORT).show();
                        oos.flush();
                        oos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                        if (fos!=){
                            try {
                                fos.flush();
                                fos.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            });
        }
     
        public void settingStart(){
            //开启软件设置之前的设置
            ObjectInputStream ois = ;
            FileInputStream fis = ;
            String statu = Environment.getExternalStorageState();
            if(!statu.equals(Environment.MEDIA_MOUNTED)){
                Toast.makeText(this,"SD卡未就绪",Toast.LENGTH_SHORT).show();
                return;
            }
            File root = Environment.getExternalStorageDirectory();
            try {
                fis = new FileInputStream(root+"/设置.txt");
                ois = new ObjectInputStream(fis);
                try {
                    settingData = (SettingData) ois.readObject();
     
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
     
                titleShow.setChecked(settingData.isTitleShow());
                textSize.setText(settingData.getTextSize());
                notify.setChecked(settingData.isNotify());
                plug.setChecked(settingData.isPlug());
                autoRead.setChecked(settingData.isAutoRead());
                transmit.setChecked(settingData.isTransmit());
            } catch (FileNotFoundException e) {
                Toast.makeText(getBaseContext(),"未找到文件",Toast.LENGTH_SHORT).show();
            } catch (StreamCorruptedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(fis!=){
     
                }
            }
     
     
        }
    }
    

     

    展开全文
  • 本次实例是将用户的设置信息,以实体类媒介,保存到内部存储或者SD的文件里。再次打开应用时,程序会自动调用文件中实体类,并对设置信息进行设置,使其恢复到用户最终保存的状态。 首先,创建一个实体类(这里...

        本次实例是将用户的设置信息,以实体类为媒介,保存到内部存储或者SD卡的文件里。再次打开应用时,程序会自动调用文件中实体类,并对设置信息进行设置,使其恢复到用户最终保存的状态。

    首先,创建一个实体类(这里要实现 Serializable 接口,即序列化,这样才能让类在内存中传递):

    public class SettingData implements Serializable{
        private boolean titleShow;
        private String textSize;
        private boolean notify;
        private boolean plug;
        private boolean autoRead;
        private boolean transmit;
    
        public SettingData() {
        }
    
        public SettingData(boolean titleShow, String textSize, boolean notify, boolean plug, boolean autoRead, boolean transmit) {
            this.titleShow = titleShow;
            this.textSize = textSize;
            this.notify = notify;
            this.plug = plug;
            this.autoRead = autoRead;
            this.transmit = transmit;
        }
    
        public boolean isTransmit() {
            return transmit;
        }
    
        public void setTransmit(boolean transmit) {
            this.transmit = transmit;
        }
    
        public boolean isTitleShow() {
            return titleShow;
        }
    
        public void setTitleShow(boolean titleShow) {
            this.titleShow = titleShow;
        }
    
        public String getTextSize() {
            return textSize;
        }
    
        public void setTextSize(String textSize) {
            this.textSize = textSize;
        }
    
        public boolean isNotify() {
            return notify;
        }
    
        public void setNotify(boolean notify) {
            this.notify = notify;
        }
    
        public boolean isPlug() {
            return plug;
        }
    
        public void setPlug(boolean plug) {
            this.plug = plug;
        }
    
        public boolean isAutoRead() {
            return autoRead;
        }
    
        public void setAutoRead(boolean autoRead) {
            this.autoRead = autoRead;
        }
    }
    接下里是Layout布局,这里楚略地弄了一个设置界面:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="jerehdu.com.jerehdu04.Scroll1Activity"
        android:orientation="vertical">
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:layout_marginBottom="6dp">
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/left_menu_activity_pressed"/>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginLeft="120dp">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="设置"
                            android:textSize="20sp"
                            android:layout_gravity="center"
                            android:layout_weight="1"/>
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="完成"
                            android:textSize="18sp"
                            android:id="@+id/setting"/>
                    </LinearLayout>
    
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:weightSum="1"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="显示列表摘要"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/titleShow"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:id="@+id/text"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="字体大小"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="中"
                        android:textSize="14sp"
                        android:id="@+id/textSize"/>
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/left_menu_blgj_pressed"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="列表页评论"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="不限"
                        android:textSize="14sp"/>
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/left_menu_blgj_pressed"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="2G/3G网络流量"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="较省流量"
                        android:textSize="14sp"/>
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/left_menu_blgj_pressed"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="清理缓存"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="当前缓存:5.21MB"
                        android:textSize="14sp"/>
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@mipmap/left_menu_blgj_pressed"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="推送通知"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/notify"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="互动插件"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/plug"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="自动优化阅读"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/autoRead"/>
                </LinearLayout>
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="#eaeaea"
                    android:layout_marginBottom="6dp"
                    android:layout_marginTop="6dp"
                    />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="30dp"
                    android:orientation="horizontal"
                    android:gravity="center">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="收藏时转发"
                        android:textSize="16sp"
                        android:layout_weight="1"/>
                    <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/transmit"/>
                </LinearLayout>
    
            </LinearLayout>
    
        </ScrollView>
    
    </LinearLayout>
    


    最后,就是Activity啦,其功能实现为设置好后点击右上角“完成”,即可保存设置内容。

    方法一:通过SharedPreferences

    ,保存设置内容:
    public class Setting2Activity extends AppCompatActivity {
    
        private CheckBox titleShow,notify,plug,autoRead,transmit;
        private TextView setting,textSize;
        private LinearLayout text;
        private SharedPreferences sp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_setting2);
            titleShow = (CheckBox) findViewById(R.id.titleShow);
            notify = (CheckBox) findViewById(R.id.notify);
            plug = (CheckBox) findViewById(R.id.plug);
            autoRead = (CheckBox) findViewById(R.id.autoRead);
            transmit = (CheckBox) findViewById(R.id.transmit);
            setting = (TextView) findViewById(R.id.setting);
            textSize = (TextView) findViewById(R.id.textSize);
            text = (LinearLayout) findViewById(R.id.text);
    
            //开启设置以保存的设置
            settingStart();
    
            //监听字体大小的改变,选择方式:对话框
            text.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(Setting2Activity.this);
                    builder.setTitle("选择字体大小");
                    builder.setIcon(R.mipmap.ic_launcher);
                    final String[] items = {"小","中","大"};
                    int i;
                    for(i=0;i<items.length;i++ ){
                        if(items[i].equals(textSize.getText())){
                            break;
                        }
                    }
                    builder.setSingleChoiceItems(items,i, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(getBaseContext(),items[which].toString(),Toast.LENGTH_SHORT).show();
                            textSize.setText(items[which].toString());
                            dialog.dismiss();
                        }
                    });
                    builder.setCancelable(true);
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();
                }
            });
    
            sp = getSharedPreferences("mysetting.txt", Context.MODE_PRIVATE);
            setting.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //存入数据
                    SharedPreferences.Editor editor = sp.edit();
                    editor.putBoolean("titleShow",titleShow.isChecked());
                    editor.putString("textSize",textSize.getText().toString());
                    editor.putBoolean("notify",notify.isChecked());
                    editor.putBoolean("plug",plug.isChecked());
                    editor.putBoolean("autoRead",autoRead.isChecked());
                    editor.putBoolean("transmit",transmit.isChecked());
                    editor.commit();
                    Toast.makeText(getBaseContext(),"保存成功",Toast.LENGTH_SHORT).show();
                }
            });
    
        }
    
        //启动函数
        public void settingStart(){
            sp = getSharedPreferences("mysetting.txt", Context.MODE_PRIVATE);
            if(sp.getString("textSize","").equals("")){
                Toast.makeText(getBaseContext(),"还没有预设值",Toast.LENGTH_SHORT).show();
                return;
            }
            titleShow.setChecked(sp.getBoolean("titleShow",false));
            textSize.setText(sp.getString("textSize",""));
            notify.setChecked(sp.getBoolean("notify",false));
            plug.setChecked(sp.getBoolean("plug",false));
            autoRead.setChecked(sp.getBoolean("autoRead",false));
            transmit.setChecked(sp.getBoolean("transmit",false));
        }
    }

    方法二:实体类保存,并将其传到SD卡文件中:

    public class SettingActivity extends AppCompatActivity {
    
        private CheckBox titleShow,notify,plug,autoRead,transmit;
        private TextView setting,textSize;
        private LinearLayout text;
        private SettingData settingData;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_scroll1);
            titleShow = (CheckBox) findViewById(R.id.titleShow);
            notify = (CheckBox) findViewById(R.id.notify);
            plug = (CheckBox) findViewById(R.id.plug);
            autoRead = (CheckBox) findViewById(R.id.autoRead);
            transmit = (CheckBox) findViewById(R.id.transmit);
            setting = (TextView) findViewById(R.id.setting);
            textSize = (TextView) findViewById(R.id.textSize);
            text = (LinearLayout) findViewById(R.id.text);
    
            //开启设置以保存的设置
            settingStart();
    
            //监听字体大小的改变,选择方式:对话框
            text.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
                    builder.setTitle("选择字体大小");
                    builder.setIcon(R.mipmap.ic_launcher);
                    final String[] items = {"小","中","大"};
                    int i;
                    for(i=0;i<items.length;i++ ){
                        if(items[i].equals(textSize.getText())){
                            break;
                        }
                    }
                    builder.setSingleChoiceItems(items,i, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(getBaseContext(),items[which].toString(),Toast.LENGTH_SHORT).show();
                            textSize.setText(items[which].toString());
                            dialog.dismiss();
                        }
                    });
                    builder.setCancelable(true);
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();
                }
            });
    
            //监听“完成”
            setting.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    settingData = new SettingData(titleShow.isChecked(),
                            textSize.getText().toString(),notify.isChecked(),
                            plug.isChecked(),autoRead.isChecked(),transmit.isChecked());
                    FileOutputStream fos = null;
                    ObjectOutputStream oos = null;
                    String state = Environment.getExternalStorageState();
                    if(!state.equals(Environment.MEDIA_MOUNTED)){
                        Toast.makeText(getBaseContext(),"请检查SD卡",Toast.LENGTH_SHORT).show();
                        return;
                    }
                    File file = Environment.getExternalStorageDirectory();
                    try {
                        File myfile = new File(file.getCanonicalPath(),"/设置.txt");
                        fos = new FileOutputStream(myfile);
                        oos = new ObjectOutputStream(fos);
                        oos.writeObject(settingData);
                        Toast.makeText(getBaseContext(),"设置成功",Toast.LENGTH_SHORT).show();
                        oos.flush();
                        oos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                        if (fos!=null){
                            try {
                                fos.flush();
                                fos.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            });
        }
    
        public void settingStart(){
            //开启软件设置之前的设置
            ObjectInputStream ois = null;
            FileInputStream fis = null;
            String statu = Environment.getExternalStorageState();
            if(!statu.equals(Environment.MEDIA_MOUNTED)){
                Toast.makeText(this,"SD卡未就绪",Toast.LENGTH_SHORT).show();
                return;
            }
            File root = Environment.getExternalStorageDirectory();
            try {
                fis = new FileInputStream(root+"/设置.txt");
                ois = new ObjectInputStream(fis);
                try {
                    settingData = (SettingData) ois.readObject();
    
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
    
                titleShow.setChecked(settingData.isTitleShow());
                textSize.setText(settingData.getTextSize());
                notify.setChecked(settingData.isNotify());
                plug.setChecked(settingData.isPlug());
                autoRead.setChecked(settingData.isAutoRead());
                transmit.setChecked(settingData.isTransmit());
            } catch (FileNotFoundException e) {
                Toast.makeText(getBaseContext(),"未找到文件",Toast.LENGTH_SHORT).show();
            } catch (StreamCorruptedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(fis!=null){
    
                }
            }
    
    
        }
    }
    


    效果图:



    展开全文
  • 在Android 2.2上设置程序默认安装SD

    千次阅读 2011-03-26 16:57:00
    2.2系统应用程序默认被安装在手机内部存储上,不同通过下面的教程你可以自动安装几乎所有应用程序到手机SD上。 如何在Android 2.2系统安装所有应用程序到SD l 在Android手机启用USB调试功能,方法在...

    如 果你已经在手机上升级了Android 2.2系统,那么你肯定已经尝试过移动一些应用程序到SD卡上来释放手机内存空间。在Android 2.2系统上移动应用程序到SD卡,首先应用程序必须支持这一操作。另外Android 2.2系统应用程序默认被安装在手机内部存储上,不同通过下面的教程你可以自动安装几乎所有应用程序到手机SD卡上。

    如何在Android 2.2系统安装所有应用程序到SD

    l 在Android手机启用USB调试功能,方法为在手机设置 >应用程序 >开发 勾选USB调试选项

     

    l 在你的电脑上下载并安装Android SDK (下载地址为 http://developer.android.com/sdk/),解压下载的程序包到你指定的文件夹,运行SDK Setup.exe,点击左侧的Available Packages,如果程序跳出报错提示,在设置里勾选“Force https://…”,在Available Packages的列表里,选择“ Usb Driver package ”,点击install右下角的install按钮开始安装,按照步骤完成安装操作。

     

    l 使用USB线缆连接你的手机和电脑,你的电脑应该会跳出提示让你安装新硬件的驱动程序,选择从指定位置安装,然后选择从android-sdk/usb_driver文件夹安装。注意连接手机到电脑后不要挂载你的SD卡,只需要用线缆连接即可。

    l 在Windows系统中打开命令提示符(开始菜单,选择运行,输入cmd回车即可),使用CD命令切换到Android-SDK/tools目录下,Android-SDK为你前面安装Android SDK指定的目录。

     

    l 在命令提示符进入Android-SDK/tools目录后,输入adb devices回车,你应该可以看到一串序列号,接着输入adb shell pm setInstallLocation 2,回车,搞定!Android 系统现在回默认安装所有应用程序到SD卡,同时也会启动大部分程序可以移动到手机内部存储。

     

    l 如果想重新设置应用程序默认安装到手机内部存储,可以按照上面的方法,输入adb shell pm setInstallLocation 0回车即可。

     

    哪些应用程序应该保留在手机内部存储上

    l 需要和Android系统交互并且在后台运行的程序

    l 动态壁纸

    l Widget小工具

    l 绑定Widget的应用程序(程序安装在SD卡widget将无法使用)

    使 用上面的方法设置应用程序默认安装到SD卡后,上面提到的这四种类型的程序应该手工转移到手机内存上,原因如下:当你把手机SD卡挂载为系统磁盘 后,Android系统将不需要访问安装在内存卡上的应用程序,所以安装在内存卡上的应用程序将被关闭。如果你安装在SD卡的程序需要手机开机时自动启 动,不过安装在SD卡的应用程序肯定比安装在手机内存上的应用程序运行更慢,所以SD卡上那些自动运行的程序将无法识别自己的位置,系统会报错,这些程序 将无法正常使用。

    移动SD卡上的应用程序到手机内存

    既 然上面这四种程序必须要安装在手机内存才能正常运行,而现在系统又默认安装所有程序到SD卡,这就需要把这些程序手机转移到内存上,手机操作太麻烦,可以 在Android Market上下载安装App 2 SD程序,这个程序会自动识别应用程序安装的位置,并且可以很方便的在SD卡和手机内存里方便的互相转移,并且支持批量操作,非常方便。

     

    展开全文
  • Android存储的实现

    2016-12-09 19:07:53
    在Android开发中,少不了对数据文件进行存取,需要掌握的Android存储功能技术如下: ...内部存储:即面向移动设备内部自带存储区域的存取(并不是手机的CPU内存),同样可数据做持久化保存,由于移动设备可能并
  • 文件数据储存之内部储存

    万次阅读 2019-03-01 13:28:30
    Android官方API:在设备内存存储私有数据。 内部储存:Android的内部...可以把它设置为公有的(public),则可以被其他的App访问。当一个应用卸载后,内部储存中的文件会被删除。 使用:内部储存空间十分有限,主...
  • bios的设置,,,,,

    2010-04-23 19:39:52
    设置为"AUTO"时,如果通过串口扩展在同一个端口地址上使用了两个设备,内置串口自动重新分配可用端口地址。串口先使用COM1,再使用COM2,如果两个地址都已经分配给某个端口,该端口将被禁用。 Parallel Port 并口...
  • 解决的方法我们只需要进入CMOS设置中的“PNP/PCI CONFIGURATION ”,把“Reset ESCD ”设置为“Enabled”(再次启动电脑后,该选项会自动变换成Disabled)却可。 9.BIOS芯片氧化或接触不良  每一块电脑主板都有一片...
  • 66、SD相关 67、服务相关 68、Shell相关 69、短信相关 70、Snackbar相关 71、SharedPreferences相关 72、状态栏背景色 73、状态栏字体颜色模式 74、字符串相关 75、线程操作相关 76、时间经历工具类 77、Toast工具...
  • 阴道镜XP常用.rar

    2019-09-22 17:15:31
    9、DICOM支持:可升级DICOM版工作站,支持ICOM传输,DICOM存储,DICOM打印。 10、网络支持:工作站软件可升级网络版,同时使用网络数据库,各工作站共享数据资源,方便各科室调阅。 11、数据库:单机版软件网络...
  • 9、DICOM支持:可升级DICOM版工作站,支持ICOM传输,DICOM存储,DICOM打印。 10、网络支持:工作站软件可升级网络版,同时使用网络数据库,各工作站共享数据资源,方便各科室调阅。 11、数据库:单机版软件网络...
  • 超声随心所欲xp版.rar

    2015-08-26 22:55:40
    9、DICOM支持:可升级DICOM版工作站,支持ICOM传输,DICOM存储,DICOM打印。 10、网络支持:工作站软件可升级网络版,同时使用网络数据库,各工作站共享数据资源,方便各科室调阅。 11、数据库:单机版软件网络...
  • 从电脑上打开手机的内存卡,直接把证书导入SD卡中。点击设置 -> 安全 -> 从 SD 卡安装 -> 从内部存储空间中找到证书,点击安装即可(不能直接点击安装,会出现无法安装证书,...
  • 9、DICOM支持:可升级DICOM版工作站,支持ICOM传输,DICOM存储,DICOM打印。 10、网络支持:工作站软件可升级网络版,同时使用网络数据库,各工作站共享数据资源,方便各科室调阅。 11、数据库:单机版软件...
  • 由0晋升200%系统高手

    2008-09-12 16:27:33
    4.2.4 常见存储介质CD、CD-R、CD-RW、U盘和数码相机内存卡的修复 4.2.5 常用邮件、图片、影像、ZIP、MS Office、声音文件的修复 实例1:系统恢复与备份一键搞定—史上最完美的一键恢复、备份系统 实例2:Windows ...
  • 369.打印机内部灰尘过多 370.打印机软性喷头堵塞 371.喷头堵塞 372.打印机喷嘴阻塞 373.打印头损坏 374.主板上打印端口失效 375.打印一半后“死机” 376.页码打印不正确 377.打印图像上出现横纹、白条或图文变浅、...
  • 限制共享【不能设置为完全控制】 及时审核日志 sqlserver的审核机制可以帮助跟踪并且阻止系统中没有授权的用户他的行为。比如没有授权的用户登录系统会阻止这次登录,并且把这次操作给记录下来。审核机制既能跟踪...
  • 180、修复部分华为机型无法读取内存卡的问题 179、修复Service可能存在的问题 178、允许根据intent判断Activity是否在外部启动 177、修复部分机型上Gms和Google Play启动到了不正确的环境 176、修复新实现的...
  • 该调用将会设置协议的最大发送窗口和最大接收窗口大小,默认32. 这个可以理解 TCP的 SND_BUF 和 RCV_BUF,只不过单位不一样 SND/RCV_BUF 单位是字节,这个单位是包。 最大传输单元: 纯算法协议并不负责探测 ...
  • 实例272 保存对话框设置默认文件名 实例273 支持图片预览的文件选择对话框 实例274 颜色选择对话框 实例275 信息输入对话框 实例276 定制信息对话框 11.7 MDI窗体的使用 实例277 创建内部子窗体 实例278 ...
  • 实例272 保存对话框设置默认文件名 实例273 支持图片预览的文件选择对话框 实例274 颜色选择对话框 实例275 信息输入对话框 实例276 定制信息对话框 11.7 MDI窗体的使用 实例277 创建内部子窗体 实例278 ...
  • Visual C++编程技巧精选500例.pdf

    热门讨论 2012-09-01 15:01:50
    《Visual C++编程技巧精选500例》pdf Visual C++编程技巧精选500例.pdf 第1章 消息框 001 如何创建消息框?...358 如何获取系统内存的使用情况? 359 如何映射网络驱动器? 360 如何取消网络驱动器映射? 第...
  • <ol><li>这辈子第一次见到有人写dll,居然使用内部类做回调参数的的 string是C++内置类型,实际上,也算是一个类(类实际在编译中,一般都处理成record/struct形式存放在编译后的bin中的) 不同的版本,不同的...
  • 大势至共享文件审计系统

    热门讨论 2012-12-24 14:56:52
    使得单位重要的共享文件常常被员工私自拷贝、修改、删除等,并且由于对外来电脑缺乏控制,导致外来人员通过携带笔记本、U盘、移动存储设备等接入到单位内部的局域网中,非法访问、拷贝重要的共享文件,给单位的信息...
  • 黑马安卓52期视频教程

    热门讨论 2015-06-24 22:15:48
    09_使用路径API获取内部存储的路径 10_在外部存储读写文件 11_检测sd的状态 12_查看源码获取sd剩余空间 13_文件访问权限 14_SharedPreference 15_生成xml文件 16_用序列化器生成Xml文件 17_pull解析XML 18_debug...
  • 9、查询:软件内部使用SQL语言进行模糊查询,数据库的每个字段均可单独或组合查询,查询结果可以集中备份、删除,可以直接备份到光盘。 10、统计:精液分析软件通过对不同字段的查询得出的结果可以打印报表,如:...
  • C#全能速查宝典

    热门讨论 2014-04-26 16:16:27
    1.1.4 变量——存储特定类型的数据 4 1.1.5 Console类——控制台中的输入流、输出流和错误流 6 1.1.6 Convert类——类型转换 8 1.1.7 常量——值不改变的量 9 1.1.8 Dispose方法——释放资源 10 1.1.9 迭代器——...
  • 会计理论考试题

    2012-03-07 21:04:40
    A、可以减少屏幕损耗 B、可以节省计算机内存 C、可以保障系统安全 D、可以增加动感 36.记录在存储介质上的一组相关信息的集合称为 __D_ 。 A、程序 B、磁盘 C、软件 D、文件 37.在资源管理器中,双击扩展名“.TXT...
  • 如果这个产品上,缓存文件存储在磁盘上的临时目录,否则会被存储内存中。 突出显示文档类上启动 - FFDec SWF可以打开后直接跳转到AS3文档类 更改语言设置面板 其他 通过右键单击上下文菜单中删除标签标签树 ...
  • 实例258 设置窗体背景颜色淡蓝色 329 实例259 实现带背景图片的窗体 330 实例260 使背景图片自动适应窗体的大小 331 实例261 背景渐变色的主界面 332 实例262 随机更换窗体背景 334 11.5 窗体形状及应用 335 ...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

内存卡设置为内部存储