-
2021-06-03 02:26:23
一、前言:
Android 中获取本地储存路径,有四个方法,
getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()。
接下来介绍下每个方法的特点以及路径地址
getCacheDir():/data/data/你的应用的包名/cache
getFilesDir():/data/data/你的应用的包名/files
getExternalFilesDir():SDCard/Android/data/你的应用的包名/files/
getExternalCacheDir():SDCard/Android/data/你的应用包名/cache/
从上文每个方法获取的路径中可以看出,getCacheDir()和getFilesDir()是获取手机自带的存储空间中的当前包文件的路径 ;
getExternalFilesDir()和getExternalCacheDir()是获取手机中SD卡的存储控件中的当前包文件的路径。
使用外部存储记得加上访问权限:
二、路径解析:
1. getCacheDir()
该目录主要用于存放缓存文件,当系统的内存存储空间紧张时,该目录下的文件会被删除掉。关于这些文件究竟会在存储空间剩余多少的情况,没有严格的标准保障。
注意:你不应该依赖系统来清理这些缓存文件,你应该对这些缓存文件占用的最大存储空间设定个最大值,比如是1M,当实际占用空间超过这个值时,你应该对这些缓存文件做相应的清理工作(prune)。
返回的路径可能会改变随着时间的推移,所以应该保存相对路径相对路径。
2. getFilesDir()
openFileOutput() 方法存储的路径,跟getFilesDir() 返回的路径是同一个路径,换句话说:getFilesDir(),是获取openFileOutput() 方法的存储路径。
返回的路径可能会改变随着时间的推移,所以应该保存相对路径相对路径
不需要任何权限也可以访问
目录中的文件,会在卸载你的应用程序时被删除掉
3. getExternalFilesDir()
存储在SD卡中,和getFilesDir()类似;
该方法路径下系统不一定会自动删除文件,所以需要手动设置使用的大小
getExternalFilesDir()路径不一定可用,因为,sd卡可能被卸载
4. getExternalCacheDir()
存储在SD卡中,和getCacheDir类似;
该方法路径下系统不一定会自动删除文件,所以需要手动设置使用的大小
getExternalCacheDir()路径不一定可用,因为,sd卡可能被卸载
public String getDiskCacheDir(Context context) {
String cachePath = null;
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable()) {
cachePath = context.getExternalCacheDir().getPath();
} else {
cachePath = context.getCacheDir().getPath();
}
return cachePath;
}
三、代码解析:
1. 手机应用内置存储路径
getFilesDir().getAbsolutePath()
getFilesDir().getPath()
getCacheDir().getAbsolutePath()
getCacheDir().getPath()
实验代码:
String savePath5 = getFilesDir().getAbsolutePath();
String savePath6 = getFilesDir().getPath();
String savePath7 = getCacheDir().getAbsolutePath();
String savePath8 = getCacheDir().getPath();
Log.d(TAG,"save path5 --------->"+savePath5);
Log.d(TAG,"save path6 --------->"+savePath6);
Log.d(TAG,"save path7 --------->"+savePath7);
Log.d(TAG,"save path8 --------->"+savePath8);
打印结果:
tag:save path5 --------->/data/user/0/fxjzzyo.com.ffmpegtest/files
tag:save path6 --------->/data/user/0/fxjzzyo.com.ffmpegtest/files
tag: save path7 --------->/data/user/0/fxjzzyo.com.ffmpegtest/cache
tag: save path8 --------->/data/user/0/fxjzzyo.com.ffmpegtest/cache
结论:
getFilesDir()返回的是/data/user/0/包名/files这个文件夹,与应用的存在有关,当应用卸载时,里面的内容也同时被删除。
同理,getCacheDir()返回的是/data/user/0/包名/cache这个文件夹,与应用的存在有关,当应用卸载时,里面的内容也同时被删除。
另外,我这里的实验结果getAbsolutePath()和getPath()返回的路径是一样的,所以使用时不必纠结,我打算以后就用绝对路径getAbsolutePath()好了。
2. 手机外置sd卡存储路径
有两种获取方式,一种是获取到sd卡根目录,另一种是获取到应用相关的sd卡目录。
2.1 获取sd卡根目录路径
Environment.getExternalStorageDirectory().getAbsolutePath()
实验代码:
String savePath9 = Environment.getExternalStorageDirectory().getAbsolutePath();
String savePath10 = Environment.getExternalStorageDirectory().getPath();
Log.d(TAG,"save path9 --------->"+savePath9);
Log.d(TAG,"save path10 --------->"+savePath10);
打印结果:
tag: save path9 --------->/storage/emulated/0
tag: save path10 --------->/storage/emulated/0
结论:
Environment.getExternalStorageDirectory()获取的是sd卡的根目录文件夹,与应用无关,即使卸载了应用,里面的内容依然存在。
2.2 获取到应用相关的sd卡目录路径
getExternalFilesDir(null).getAbsolutePath()
实验代码:
String savePath = getExternalFilesDir(null).getAbsolutePath();
String savePath2 = getExternalFilesDir(null).getPath();
String savePath3 = getExternalCacheDir().getAbsolutePath();
String savePath4 = getExternalCacheDir().getPath();
Log.d(TAG,"save path --------->"+savePath);
Log.d(TAG,"save path2 --------->"+savePath2);
Log.d(TAG,"save path3 --------->"+savePath3);
Log.d(TAG,"save path4 --------->"+savePath4);
打印结果:
tag: save path --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/files
tag: save path2 --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/files
tag: save path3 --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/cache
tag: save path4 --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/cache
结论:
getExternalFilesDir(null)获取的是/storage/emulated/0/Android/data/包名/files这个文件夹,与应用有关,卸载了应用,里面的内容也没了。
同理,getExternalCacheDir()获取的是/storage/emulated/0/Android/data/包名/cache这个文件夹,与应用有关,卸载了应用,里面的内容也没了。
更多相关内容 -
Android本地存储SharedPreferences详解
2021-01-04 15:39:21Android本地存储SharedPreferences详解 存储位置 SharedPreferences数据保存在: /data /data/<package> /shared_prefs 文件夹下,以XML格式保存,根元素为:。文件名称为获取SharedPreferences实例时传递的參数值。... -
android 本地存储的几种方式
2021-06-02 18:32:21身为一个android码农,我认为最常见的的两种数据存储:本地存储和网络存储那么本地存储有哪些方式呢?分别如何实现呢?下面跟大家细说android的几种存储方式和实现方法1 使用SharedPreferences存储数据。2 文件存储...身为一个android码农,我认为最常见的的两种数据存储:本地存储和网络存储
那么本地存储有哪些方式呢?分别如何实现呢?下面跟大家细说android的几种存储方式和实现方法
1 使用SharedPreferences存储数据。
2 文件存储数据
3 SQLite数据库存储数据
一:
实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取SharedPreferences对象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences("data", MODE_PRIVATE);
//存入数据
Editor editor = sp.edit();
editor.putString("name", "张三");
editor.putString("sex",
"男");
editor.putString("old","25");
editor.commit();
//取值
Sting name= sp.getString("name","");//后面的参数是未取到值得时候返回的值
Sting name= sp.getString("sex","");
Sting name= sp.getString("old","");
Log.e("text:","name:"+name+"sex"+sex+"old"+old);
}
}
第二种: 文件存储数据
并不是很常见哦
public void down()
{
try {
FileOutputStream outStream=this.openFileOutput("data.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
}
catch (IOException e){
}
}
Context.MODE_WORLD_READABLE为默认模式,该模式是只有当前应该可以读取该文件,如果想让其他应用需要读取,可以把模式换成Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE
读取文件的方法
public
void loading()
{
try {
FileInputStream inStream=this.openFileInput("data.txt");
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1) {
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
Toast.makeText(MyActivity.this,stream.toString(),Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
}
catch (IOException e){
}
}
因为这个没有写入SD卡,所以比较大的文件建议写入SD卡。
加上权限
File sdCardDir = new File("/sdcard"); //获取SDCard目录
File saveFile = new File(sdCardDir, "data.txt");
//上面两句代码可以合成一句:
File saveFile = new File("/sdcard/a.txt");
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write("test".getBytes());
outStream.close();
三:SQLite数据库存储数据
这种也比较常见,个人感觉也比较方便哦
public class MySqliteOpenHelper extends SQLiteOpenHelper {//构造方法//第一个参数是上下文的意思//第二个参数是数据库的名称//第三个参数是游标工厂,一般使用null就可以//第四个参数是版本号public MySqliteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);}//数据库没有创建才回调这个方法//用于数据库的表的创建@Overridepublic void onCreate(SQLiteDatabase db) {//创建数据库的一个使用的表db.execSQL(SQlite.CREATE_TABLE);}//版本变化时回调的方法,要求新版本大于旧版本呢!@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//删除数据库的表,再创建数据库的表db.execSQL(SQlite.DELETE_TABLE);onCreate(db);}//定义一个数据库的基本信息,包括一些基本的使用语句static class SQlite {public static final String DB_NAME = "Test.db";//数据库名称public static final String TABLE_NAME = "userInfo";//要操作的表的名称//表格里面的数据public static final String ID = "_id";//用户的IDpublic static final String USER_TIME = "time";//用户的姓名public static final String USER_CONTEXT = "context";//用户的年龄public static final String USER_NUMBER = "number";//用户的性别//创建表格使用的SQL语句public static final String CREATE_TABLE = "create table " + TABLE_NAME + " (" + ID + " integer primary key autoincrement," + USER_CONTEXT + " text not null," + USER_NUMBER + " text not null," + USER_TIME + " text not null"+ ")";//删除表格使用的语句public static final String DELETE_TABLE = "drop table if exists " + TABLE_NAME;}}
在Activity中MySqliteOpenHelper helper = new MySqliteOpenHelper(context, MySqliteOpenHelper.SQlite.DB_NAME, null, 1);//获得数据库对象helper.get...//可读,并且可写---的数据库: 磁盘满的情况,写不进去,不写了,一般情况使用这个*//*db = helper.getReadableDatabase();
这是查询出值
private void select() {list.clear();//先清除页面上的数据//再加载数据库的数据//这里查询所有的数据,只需要一个表名就可以了,后面的条件可以不写,获得的是一个结果集Cursor cursor = db.query(MySqliteOpenHelper.SQlite.TABLE_NAME, null, null, null, null, null, null);//结果集指向的表头前面.moveToNext()来指向下一个结果while (cursor.moveToNext()) {//获取结果集里面的数据//cursor.getColumnIndex()获取列名所在的列号infobean phone = new infobean();//这里通过列号来获取数据phone.setTime(cursor.getString(cursor.getColumnIndex(MySqliteOpenHelper.SQlite.USER_TIME)));phone.setContext(cursor.getString(cursor.getColumnIndex(MySqliteOpenHelper.SQlite.USER_CONTEXT)));phone.setNumber(cursor.getString(cursor.getColumnIndex(MySqliteOpenHelper.SQlite.USER_NUMBER)));//把找到的数据添加到List集合中list.add(phone);}}
SQLlist 这个存储方法还挺常用,这都是从我代码中拷出来的,大家需要用的时候把列明改下就OK了
要下班了,就不补充了啊
-
android本地存储工具类封装
2021-12-15 22:23:30import android.app.Application; import android.content.SharedPreferences;... * @description 本地存储工具类 * @date 2021-12-* */ public class SharedPrefUtils { private static SharedPrefUtils instanpackage com.coral3.common_module.utils; import android.app.Application; import android.content.SharedPreferences; /** * @author 蓝之静云 * @description 本地存储工具类 * @date 2021-12-* */ public class SharedPrefUtils { private static SharedPrefUtils instance; private SharedPreferences sp; private SharedPrefUtils(Application application) { sp = application.getSharedPreferences( application.getPackageName(), 0); } public static SharedPrefUtils getInstance() { if (instance == null) { synchronized (SharedPrefUtils.class) { if (instance == null) { instance = new SharedPrefUtils((Application) InitUtil.getContext().getApplicationContext()); } } } return instance; } public void put(String key, String value) { sp.edit().putString(key, value).commit(); } public String get(String key, String defValue) { return sp.getString(key, defValue); } public void put(String key, Integer value) { sp.edit().putInt(key, value).commit(); } public Integer get(String key, Integer defValue) { return sp.getInt(key, defValue); } public void put(String key, Float value) { sp.edit().putFloat(key, value).commit(); } public Float get(String key, Float defValue) { return sp.getFloat(key, defValue); } public void put(String key, Long value) { sp.edit().putLong(key, value).commit(); } public Long get(String key, Long defValue) { return sp.getLong(key, defValue); } public void put(String key, boolean value) { sp.edit().putBoolean(key, value).commit(); } public Boolean get(String key, boolean defValue) { return sp.getBoolean(key, defValue); } public void remove(String key) { try { sp.edit().remove(key).commit(); } catch (Exception e) { e.printStackTrace(); } } }
-
Android本地存储的几种方式
2021-06-03 03:14:50Android提供了多种选择来保存永久性的数据,根据不同的需求来使用不同的保存方式,一般情况下,保存数据的方式有下面几种:SharedPreferences内部存储外部存储SQLite网络连接下面主要来看一下前四种数据保存方式。...Android提供了多种选择来保存永久性的数据,根据不同的需求来使用不同的保存方式,一般情况下,保存数据的方式有下面几种:
SharedPreferences
内部存储
外部存储
SQLite
网络连接
下面主要来看一下前四种数据保存方式。
SharedPreferences
SharedPreferences(以下简称SP)以键值对形式进行存储,数据以xml形式存储在/data/data/项目包名/shared_prefs/xml.xml中。一般来说,SP只能存储基本类型的数据,如:布尔类型、浮点型、整形及字符串,默认情况下,SP保存的文件是应用的私有文件,其他应用(和用户)不能访问这些文件,SP的使用方式及源码解析详见:
http://blog.csdn.net/u013700502/article/details/53635499
SP不支持多进程之间通信,多进程之间使用可能会导致数据异常,替代SP的一种方式:https://github.com/grandcentrix/tray
内部存储
直接在设备的内部存储中保存文件。默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载应用时,这些文件也会被移除。
String FILENAME = "hello_file.txt";
String string = "hello world!";
FileOutputStream fos = null;
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我们在/data/data/项目包名/files/下可以看到已经成功创建了相应文件并且把数据写进去了:
S80114-23015717.jpg
其他方法(都在Context类中):
getFilesDir() 获取在其中存储内部文件的文件系统目录的绝对路径。
返回路径为:/data/data/com.xxx.xxx/files
getDir()
在您的内部存储空间内创建(或打开现有的)目录。如:
getDir("mq", Context.MODE_PRIVATE).getAbsolutePath()
返回结果: /data/data/com.xxx.xxx/app_mq, 我们看到系统自动给我们的文件名前加了”app_”
deleteFile()
删除保存在内部存储的文件。如:
deleteFile("mq")
删除/data/data/com.xxx.xxx/files目录中对应mq的文件,如果存在并删除成功,返回true;反之返回false
fileList()
返回应用当前保存的一系列文件。
同样也是列出/data/data/com.xxx.xxx/files目录下的所有的文件
外部存储
每个兼容 Android 的设备都支持可用于保存文件的共享“外部存储”。 该存储可能是可移除的存储介质(例如 SD 卡)或内部(不可移除)存储。 保存到外部存储的文件是全局可读取文件,而且,在计算机上启用 USB 大容量存储以传输文件后,可由用户修改这些文件。存储分为两种,一种是应用卸载后,存储数据也会被删除,一种永久存储,即使应用被卸载,存储的数据依然存在:
(1)通过context.getExternalFilesDir(null).getPath()来获得,得到的路径是/storage/emulated/0/Android/data/package_name/, 当应用卸载后,存储数据也会被删除。下面一段话来自google文档描述:
如果处理的文件不适合其他应用使用(例如仅供自己应用使用的图形纹理或音效),则应该通过调用 getExternalFilesDir() 来使用外部存储上的私有存储目录。此方法还会采用 type 参数指定子目录的类型(例如 DIRECTORY_MOVIES)。 如果您不需要特定的媒体目录,请传递 null 以接收应用私有目录的根目录。
从 Android 4.4 开始,读取或写入应用私有目录中的文件不再需要 READ_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 权限。 因此,您可以通过添加 maxSdkVersion 属性来声明,只能在较低版本的 Android 中请求该权限:
android:maxSdkVersion="18" />
...
注:当用户卸载您的应用时,此目录及其内容将被删除。此外,系统媒体扫描程序不会读取这些目录中的文件,因此不能从 MediaStore 内容提供程序访问这些文件。 同样,不应将这些目录用于最终属于用户的媒体,例如使用您的应用拍摄或编辑的照片或用户使用您的应用购买的音乐等 — 这些文件应保存在公共目录中。
除了context.getExternalFilesDir()之外,还有getExternalCacheDir(),文件将保存到/storage/emulated/0/Android/data/package_name/cache目录下,当文件不再需要时,记得把缓存文件删除。
(2)永久存储,即使应用被卸载,存储的数据依然存在,存储路径如:/storage/emulated/0/mDiskCache,可以通过Environment.getExternalStorageDirectory().getAbsolutePath() + “/mDiskCache” 来获得路径。
数据库SQLite
Android 提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问您所创建的任何数据库。
关于SQLite的介绍、基本使用以及升级策略,请移步:
http://blog.csdn.net/u013700502/article/details/78764917
网络连接
使用网络(如果可用)来存储和检索有关自己的网络服务的数据。 要执行网络操作,请使用以下包中的类:
• java.net.*
• android.net.*
引用
-
Android 本地文件的存储和读取
2016-04-28 19:54:44代码简单,逻辑清晰,即学即用 -
android系统APP日志写入本地保存
2021-04-30 20:11:20android系统APP日志写入本地保存 -
Android本地数据存储之文件存储读写
2015-10-27 15:54:31Android本地数据存储中的文件存储,写入,重写和删除Android中.txt格式的文件 -
Android本地数据存储方案(一)
2021-06-03 00:59:36不足之处,欢迎指正~在说到Android数据存储之前,先提一下数据持久化,所谓数据持久化就是将内存中的瞬时数据保存下来,在应用开发中是很重要的部分。举个栗子,我们打开一个应用之后输入了用户名和密码,之后回到了... -
droidcon_sync:展示本地 SQLite 存储和网络服务之间数据同步的 Android 应用
2021-06-20 10:04:12droidcon_sync 展示本地 SQLite 存储和网络服务之间数据同步的 Android 应用 -
检测Android本地存储是否有敏感信息
2021-06-02 21:46:11目录Android本地存储数据的地方如何读取内存SQLiteShared Preferences内部存储外部存储(SDcard)其它程序检测Android本地存储数据的地方内存Internal StorageSQLiteShared Preferences内部存储-硬盘外部存储(SDcard)... -
android本地存储mmkv的简单使用
2021-03-01 18:01:031.mmkV和SharedPreferences类似,但是存储和读取效率优于sp 缺点是mmkv,依赖体积大些 简单使用: 1.gradle里添加依赖 //mmkv implementation 'com.tencent:mmkv-static:1.2.7' 2.在application里 初始化 //使用步骤... -
【Android】本地数据存储之文件存储和SharedPreferences
2021-12-13 10:57:32Android平台提供了五种数据存储的方式: 文件存储:Android提供了openFileInput()和openFileOutput()方法来读取设备上的文件,读取方式和Java中的I/O程序是一样的。 SharedPreferences:可以用来存储简单的... -
Android本地存储数据方法(超简单)
2017-03-28 13:48:12解决方法:用SharedPreferences做存储。 实现: 提取出两个方法,一个存,一个取。直接放在项目的工具类CommonUtil.java中即可。 /** * 将字符串数据保存到本地 * @param context 上下文 * @param ... -
Android本地存储
2016-09-22 20:26:181、Android本地存储,在配置文件。注意设置响应权限,例如网络访问权限,读、写访问权限。<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.... -
Android开发存储方式详解之本地文件读写实例
2021-05-27 07:38:241、布局文件:输入框、按钮和文本xmlns:tools=...android:id="@+id/ed_text"android:layout_width="match_parent"an... -
Android/java无法从本地存储中的.txt文件读取
2021-06-05 06:43:54Android/java无法从本地存储中的.txt文件读取我正在使用下面的代码来尝试读取文本文件(我在调用此方法之前验证文件是否存在)。public static String GetLocalMasterFileStream(String Operation) throws Exception {... -
Android,一个函数实现本地数据存储(包括List)
2021-06-02 16:59:571,存储String单个字符串参数说明1, Context(这个不多说)参数说明2,String(需要存储的String字符串)参数说明3,String(需要存储模块的名称,例如用户模块,商户模块,等等,可以自己分)参数说明4,String(存储模块下的名称,... -
android 将对象存储于本地(内存)
2021-05-28 04:22:56我们的项目中为了实现某些二次编辑的效果,就必须对一些数据进行存储,而能够将对象存储起来,对于我们的开发有时会显得十分的方便,这篇文章主要介绍如何将对象存储于本地,在下一篇文章中我们接着讨论如何将对象... -
Android中的数据存储——本地存储
2020-04-12 17:48:32Android的数据存储方式 SharedPreferences数据存储 文件存储(内部储存,外部存储) SQLite数据库存储 ContentProvider储存数据 网络存储 1、 SharedPreferences是Android的一个轻量级存储工具,用于存放类似登录... -
Android混合式开发实现本地存储(Room)
2021-11-25 10:45:331.引入依赖 //数据库 def room_version = "2.2.6" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_... implementation "androidx.room:roo -
android本地存储列表,arraylist,数组,json
2018-11-27 10:18:52public void Savepic() { ArrayList<DBBean> arrayList = new ArrayList();//新建一个数组 类型根据...//防止存储没用的数据,这里只存需要的参数 for (int i = 0; i &... -
Android本地存储路径
2018-12-04 18:04:251. 手机应用内置存储路径 getFilesDir().getAbsolutePath() getFilesDir().getPath() getCacheDir().getAbsolutePath() getCacheDir().getPath() 实验代码: String savePath5 = getFilesDir().... -
Android保存日志到本地
2021-09-28 11:04:34mPId = android.os.Process.myPid(); } public void start() { if (mLogDumper == null) mLogDumper = new LogDumper(String.valueOf(mPId), PATH_LOGCAT); mLogDumper.start(); } public void stop() { if ... -
简单实现Android读取网络图片到本地
2020-09-01 21:50:08主要为大家详细介绍了如何简单实现Android读取网络图片到本地的方法,感兴趣的小伙伴们可以参考一下 -
Android 安卓管理日志,所有输出日志保存本地
2017-05-25 09:57:56便于开发,测试,定位问题。方便查看日志。所有日志保存本地文件,可按日志等级保存,定期删除,文件最长可保存自定义天数,代码中写的3天时间,天 日志文件将会删除。 -
Android 保存数组信息在本地
2021-06-04 05:35:23项目中有一个需求,从接口获取用户的权限信息。...如果是一个权限还好处理,在多个权限的时候就有点难了,后来搜到这篇文章可以用json把数组转成字符串,再储存起来。储存:List authorities = pms.authorities;//获...