Android 6.0(不含)以下在6.0之前的版本,申请sd卡读写权限不是一件难事,只需要在AndroidManifest.xml中加入下列代码,权限会在app安装时申请,READ可以不添加。因为在8.0以前,申请WRITE会自动获取 一组 相关的权限,其中就包括READ权限<uses-permission android:name="android.permission.WRITE_EX
距离上一篇文章竟然已经隔了13天了,近期刚开始做了一小段时间的html5前端网页编辑,这就当是为后面做一个公众号做一个小的热身吧, 后来公司有一个app开发的小项目,后来发现公司竟然只有我自己做,多么孤独,闲话少叙直奔主题, 主要是完成现场写SIM卡,毕竟我们公司是。。。,主要内容是从Excel中读出数据,用数据,然后改写原Excel中的内容,之前没有接触过excel,查了一些资料,Andro
转载 2023-09-07 23:29:39
32阅读
首先读取外置TF卡,需要获取到外置TF卡的权限,因为Android 在4.4版本之后 引入了外部存储访问的框架(SAF)。SAF其中的部分功能就是通过其获取对外置TF卡的读写权限,从而操作外置TF卡。目录1、TF卡读写操作1.1获取TF卡权限1.2、DoucumentFile简介1.2.1创建文件1.2.2编辑文件1.2.3查找文件1.2.4删除文件1.2.5获得文件名1.2.6获得文件Uri1.
转载 2023-08-29 10:17:09
669阅读
文章目录前言一、ReadWriteLock二、ReentrantReadWriteLock1.特性2.使用样例结尾 前言在前面的文章中我们介绍过两种锁:内置锁(synchronized)和显式锁(ReentrantLock)。这两种锁都是独占锁,也就是说获取到这个锁之后其它线程再想获取这个锁必须等当前线程释放这个锁。有些时候线程多数情况下都是读取数据的值,而不是修改这个数据,但是读取数据的线程之
数据的存储有多种方式,比如数据库存储、SharedPreferences存储、文件存储等; 这里我们将要介绍最简单的文件存储方式; 文件存储简单的来说就是一般的JAVASE中的IO流,只是把他应用于Android手机中而已; 一、文件存储核心代码 文件存储 (1)FileOutputStream out = context.openFileOutput(String filename,i
转载 2023-12-19 09:32:13
67阅读
        ISO7816是一种接触式的读卡协议,PSAM、SAM、手机的SIM卡都是按照这个协议定制的。协议分为2个部分,复位和数据的传输。本文档主要介绍自己的理解和在调试的过程,具体协议部分的内容需要翻看ISO7816的协议文档。本文重点是带着数据对协议进行分析。适合刚接触ISO7816的人。加深对协议的理解。一、复位    &n
转载 2023-11-29 06:01:55
79阅读
读写锁简介在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用java提供的关键字 synchronized或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。而在一些业务场景中,大部分只是读数据,写数据很少,如果仅仅是读数据的话并不会影响数据正确性(出现脏读),而如果在这种业务场景下
转载 2023-07-05 17:47:13
117阅读
前言相信磁盘缓存在绝大部分的app上都有应用,相对于数据库缓存来说,可以不要注重于缓存的管理,比较开放和随意。 再加上jakewharton早年间发布的disklrucache框架,让我们使用磁盘缓存更加简单,效率上和数据库缓存也拉进了一步,以后有时间我在加上disklrucache的缓存解读。但是在多线程的环境下,对同一份数据进行读写,会涉及到线程安全的问题。比如在一个线程读取数据的时候,另外一
背景由于app可能有多个进程,因此在某些场景下,就要进程间相互同步状态,避免多个进程各做各的,但数据不同步,导致产生异常。方案目前认为 Android 平台目前有这样几个方案:使用微信MMKV,微信开源的MMKV是支持多进程同步的,开发app的话推荐使用,不过对于开发SDK避免使用第三方代码的原则,不推荐用。使用ContentProvider 包裹 Sp ,其他进程使用的时候,通过ContentP
转载 2023-07-03 17:54:13
125阅读
Android开发中,需要添加附带的db数据库,用于实现某些需求。例如,选择城市的功能,需要添加city.db。使用SQLite Database Browser,这款可视化工具来操作db文件。SQLite DataBase Browser打开city.db,如下图所示:本篇介绍查找城市1. 添加city.db文件:通过是将db文件放置到raw文件夹下,因此,在/res/raw文件夹下放置cit
转载 2023-09-03 21:54:20
185阅读
09-12 15:24:33.903: W/System.err(19499): java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, jav
读-写锁 ReadWriteLock:①ReadWriteLock 维护了一对相关的锁,一个用于只读操作, 另一个用于写入操作。   只要没有 writer,读取锁可以由 多个 reader 线程同时保持。写入锁是独占的。。②ReadWriteLock 读取操作通常不会改变共享资源,但执行 写入操作时,必须独占方式来获取锁。    对于读取操作占多数的数据结
转载 2023-07-07 15:32:21
145阅读
应用私有存储文件的写入与读取 - openFileInput 和 openFileOutput 应用私有存储文件: /data/data/<package name>/files/目录下
转载 2023-08-07 06:54:45
210阅读
读写锁ReentrantReadWriteLock的原理ReentrantReadWriteLock采用读写分离的策略,允许多个线程可以同时获取读锁。读写锁的内部维护了一个ReadLock和一个WriteLock,它们依赖Sync实现具体功能,而Sync继承自AQS,并且也提供了公平和非公平的实现。ReentrantReadWriteLock使用state的高16位表示读状态,也就是获取到读锁的次
转载 2023-08-25 22:35:23
225阅读
Android Framework读写锁封装Linux下线程同步对象——读写锁       读写锁又分为读锁定状态和写锁定状态,多个线程可以同时获得读锁定状态锁,但写锁定状态只能有一个线程获得,其他线程的读锁定请求和写锁定请求都将会阻塞直到当前的写锁定状态的释放。   首先介绍一下Linux下C语言中的读写锁所用到的一
转载 2023-09-11 21:39:56
92阅读
前言:在JUC ReentrantReadWriteLock是基于AQS实现的读写锁实现。ReadWriteLock中定义了读写锁需要实现的接口,具体定义如下:public interface ReadWriteLock { //创建一个读锁 Lock readLock(); //创建一个写锁 Lock writeLock(); } public interface
转载 2023-07-31 09:56:02
60阅读
Android的文件读写有两种,一种是默认的Java文件流,一种是对SD卡的读写。 第一种:File 打开输入: FileInputStream openFileInput(String name) 打开应用程序的数据文件夹(默认目录)下的name文件对应的输入流 打开输出:FileOutputStream openFileOutput(String name, int mode) 打开
首先得获取文件读写的权限可以在AndroidManifest中进行获取文件读写实验 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/
最近公司要求完成一个利用NFC标签管理仓库库存的一个IOT项目,要求手机从服务器获取的数据后,将数据写入NFC标签中。其实主要的核心还是利用读卡器模式对NFC标签的读写。具体如下: 1.权限的配置<uses-permission android:name="android.permission.NFC" /> <!-- 要求当前设备必须要有NFC芯片 --&gt
转载 2023-07-08 11:44:32
348阅读
在指定的路径下创建一个文件夹并将三个人的姓名和年龄写入到文件夹当中,然后在从该文件夹当中进行随机读取文件当中的内容的操作import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFile01 { public static void mai
  • 1
  • 2
  • 3
  • 4
  • 5