首页
统计
壁纸
留言板
友情链接
更多
直播
实用工具
Search
1
浏览器 | 开启Chrome和Edge的多线程下载功能(Parallel downloading)
1,153 阅读
2
给孙小姐的一封情书
462 阅读
3
LabVIEW | 各版本及开发工具模块下载
265 阅读
4
armUbuntu系统构建
247 阅读
5
OpenWRT | 作为 旁路由/单臂路由/透明网关 设置 DDNS
247 阅读
取次花丛懒回顾
默认分类
C#
MySQL
LabVIEW
Java
Android
PHP
Python
handsome
相册
百度地图
嵌入式
嵌入式Ubuntu
I.MX6ULL
linux
Unity
Golang
Rust
OpenHD
教学计划
Search
标签搜索
C#
handsome
Git
动态壁纸
开源
Unity3d
Unity
csharp
Moao
累计撰写
183
篇文章
累计收到
25
条评论
首页
栏目
取次花丛懒回顾
默认分类
C#
MySQL
LabVIEW
Java
Android
PHP
Python
handsome
相册
百度地图
嵌入式
嵌入式Ubuntu
I.MX6ULL
linux
Unity
Golang
Rust
OpenHD
教学计划
页面
统计
壁纸
留言板
友情链接
直播
实用工具
搜索到
183
篇与
的结果
2024-06-25
Android || 本地缓存,SharedPreferences使用详解
SharedPreferences概述SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置。它提供了String,set,int,long,float,boolean六种数据类型。SharedPreferences的数据以键值对的进行保存在以xml形式的文件中。在应用中通常做一些简单数据的持久化缓存。SharedPreferences使用获取 SharedPreferences //获取SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE);getSharedPreferences方法参数详解name 存储文件名字mode 存储方式 其值的含义如下值说明Context.MODE_PRIVATE指定该SharedPreferences数据只能被本应用程序读、写Context.MODE_WORLD_READABLE指定该SharedPreferences数据能被其他应用程序读,但不能写Context.MODE_WORLD_WRITEABLE指定该SharedPreferences数据能被其他应用程序读Context.MODE_APPEND该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;增加数据 //获取SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); //将获取过来的值放入文件 editor.putString("userAccount", "admin@1okk.com"); editor.putString("userPassword", "admin"); editor.putInt("age", 30); editor.putBoolean("islogin",true); // 提交数据 editor.commit();点击添加按钮以后我们可以看到在 data/data/ 应用程序包名的 shared_prefs 文件夹下生成了一个 appConfig.xml 的 xml 文件。点击可以打开该文件,可以看到该文件保存了如下的数据。<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="userAccount">admin@1okk.com</string> <string name="userPassword">admin</string> <int name="age" value="30" /> <boolean name="islogin" value="true" /> </map>读取数据读取数据可以通过获取SharedPreferences对象,通过 SharedPreferences 对象可以获取存储的数据值,第二个参数一般是个默认值,表示当获取数据的时候没有该key则返回一个默认值。 //获取SharedPreferences对象 SharedPreferences sharedPreferences= getSharedPreferences("appConfig", MODE_PRIVATE); String name=sharedPreferences.getString("userAccount",""); int age = sharedPreferences.getInt("age",0); boolean islogin = sharedPreferences.getBoolean("islogin",true); Log.i("lucashu","name:"+ name +" age:" + age +" islogin:" + islogin);删除数据删除数据跟添加数据有点类似 也是通过Editor对象来完成。//获取SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); //将获取过来的值放入文件 editor.remove("userPassword"); // 提交数据 editor.commit();修改数据修改数据跟增加数据类似,覆盖原来的数据即修改数据。 //获取SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); //将获取过来的值放入文件 editor.putString("userAccount", "i@1okk.com"); editor.putString("userPassword", "admin1"); editor.putInt("age", 31); editor.putBoolean("islogin",false); // 提交数据 editor.commit();清除数据我们可以通过Editor对象的clear方法来完成清楚数据。//获取SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("appConfig", MODE_PRIVATE); //获取Editor对象的引用 SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); // 提交数据 editor.commit();清除以后user.xml文件并不会删除,但里面的数据都没了SharedPreferences封装类package net.moao.handheldfixedpointwifi.utils.preferencesUtil; import android.content.Context; import android.content.SharedPreferences; /** * App 使用配置 轻量化存储 工具 * @author Moao.Net * @DATE 2024/6/25 */ public class AppConfig{ public static String PREFERENCE_NAME = "appConfig"; /**存储字符串*/ public static boolean putString(Context context, String key, String value) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putString(key, value); return editor.commit(); } /**读取字符串*/ public static String getString(Context context, String key) { return getString(context, key, null); } /**读取字符串(带默认值的)*/ public static String getString(Context context, String key, String defaultValue) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); return preferences.getString(key, defaultValue); } /**存储整型数字*/ public static boolean putInt(Context context, String key, int value) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putInt(key, value); return editor.commit(); } /**读取整型数字*/ public static int getInt(Context context, String key) { return getInt(context, key, -1); } /**读取整型数字(带默认值的)*/ public static int getInt(Context context, String key, int defaultValue) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); return preferences.getInt(key, defaultValue); } /**存储长整型数字*/ public static boolean putLong(Context context, String key, long value) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putLong(key, value); return editor.commit(); } /**读取长整型数字*/ public static long getLong(Context context, String key) { return getLong(context, key, 0xffffffff); } /**读取长整型数字(带默认值的)*/ public static long getLong(Context context, String key, long defaultValue) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); return preferences.getLong(key, defaultValue); } /**存储Float数字*/ public static boolean putFloat(Context context, String key, float value) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putFloat(key, value); return editor.commit(); } /**读取Float数字*/ public static float getFloat(Context context, String key) { return getFloat(context, key, -1.0f); } /**读取Float数字(带默认值的)*/ public static float getFloat(Context context, String key, float defaultValue) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); return preferences.getFloat(key, defaultValue); } /**存储boolean类型数据*/ public static boolean putBoolean(Context context, String key, boolean value) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean(key, value); return editor.commit(); } /**读取boolean类型数据*/ public static boolean getBoolean(Context context, String key) { return getBoolean(context, key, false); } /**读取boolean类型数据(带默认值的)*/ public static boolean getBoolean(Context context, String key, boolean defaultValue) { SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0); return preferences.getBoolean(key, defaultValue); } /**清除数据*/ public static boolean clearPreferences(Context context) { SharedPreferences pref = context.getSharedPreferences(PREFERENCE_NAME, 0); SharedPreferences.Editor editor = pref.edit(); editor.clear(); return editor.commit(); } }
2024年06月25日
25 阅读
0 评论
0 点赞
2024-06-25
windows 远程桌面 允许 administrator 空密码 登录
SMB 共享 无法访问等问题 通用解决方案首先开启远程控制在高级系统设置中打开远程选项关闭 网络级别身份验证(可选)修改windows的安全策略,允许远程桌面连接使用空密码打开组策略编辑器gpedit.msc计算机配置 -> Windows设置 -> 安全设置 -> 本地策略 -> 安全选项中找到 帐户: 使用空密码的本地帐户只允许进行控制台登录done!
2024年06月25日
32 阅读
0 评论
0 点赞
2024-06-24
test
技术栈:
2024年06月24日
32 阅读
0 评论
0 点赞
2024-06-20
在 Jitpack 上发布开源项目(基于 Gradle 8.2) 省流版
创建好项目之后创建模块,创建好模块之后进行配置。本篇为省流版,默认 gradle 新老版本使用经验,详细步骤版请看另一篇文章https://blog.1okk.com/archives/146.html理论上 高版本 gradle 发布 jitpack 的教程本文通用。配置根 setting.gradle 添加如下参数pluginManagement { repositories { …… } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { …… maven { url "https://jitpack.io" allowInsecureProtocol = true // 如果 url 为 http 协议,需要添加此项;https 可不用 } } } rootProject.name = "NetUtils" include ':app' include ':netutils'要发布的模块 build.gradle 修改如下plugins { …… id 'maven-publish' } android { …… } afterEvaluate { publishing { // 当前依赖库的版本号,方便我们开发者自己查看,同时发布到 MavenLocal 也是用的这个版本号(Jitpack不会使用到) def versionName = "1.0.0" publications { release(MavenPublication) { // 自定义属性 这里头是artifacts的配置信息,不填会采用默认的 groupId = 'net.moao.netutils' // 依赖库的 Group Id(Jitpack不会使用到) artifactId = 'netutils' // 依赖库的名称,单组件发布时随意填写,多组件时即为此组件的 ArtifactId(Jitpack不会使用到) version = versionName // 增加上传源码的 task artifact sourceJar // 必须有这个 否则不会上传AAR包 将bundleReleaseAar任务的单个输出文件作为发布的AAR文件。这样,该AAR文件就会成为 MavenPublication 的 artifact 并进行发布 afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) } } } } } // 增加上传源码的task task sourceJar(type: Jar) { from android.sourceSets.main.java.srcDirs archiveClassifier = "sources" } dependencies { …… }创建 jitpack.yml 指定 jitpack 使用的 java 版本根目录创建 jitpack.ymlbefore_install: - sdk install java 17.0.7-open - sdk use java 17.0.7-open jdk: - openjdk17配置完成,前往仓库上传源码,创建 TAG,然后就能在 jitpack 上发布了。
2024年06月20日
20 阅读
0 评论
0 点赞
2024-06-20
解决Android Studio Unexpected tokens (use ; to separate expressions on the same line)
较高版本 gradle 添加第三方仓库报错。Android Studio Unexpected tokens (use ; to separate expressions on the same line)解决办法gradle 工程结构发生了变化,仓库添加由原来的 build.gradle 改到了 setting.gradle (kts 同理)。jitpack 为例,将maven { url 'https://jitpack.io' }改为maven { url=uri("https://www.jitpack.io")}官网给出的配置是 dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { mavenCentral() maven { url 'https://jitpack.io' } } }应改为pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url=uri("https://www.jitpack.io")} } } rootProject.name = "HandHeldFixedPointWifi" include(":app")重新同步,解决
2024年06月20日
29 阅读
0 评论
0 点赞
1
...
18
19
20
...
37