
Android学习
CicadaMay
这个作者很懒,什么都没留下…
展开
-
一加6 Android11 氢OS 降级到Android P,安装氧OS包超简单流程
由于需要在手机上装国际语言包,而国内氢OS只支持中英文,所以我决定刷氧OS,其中也走了一些弯路,论坛上一加6有些帖子方法太老了!!!包错误!!!无法安装!!!无法降级!!!因此将流程记录下来,给以后作为参考。只要包正确,降级和安装OOS,就超级简单!!!我的原先版本Android11氢OS【一加6】.不需要降级到5.1.3!!!5.1.3是Andoird8氢系统版本,论坛上有一个帖子2022年1月一加6刷氧OS成功最短路径分享电量一直保持在50%及以上重要文件先备份。......原创 2022-07-23 00:36:03 · 10305 阅读 · 0 评论 -
Android 11 保存文件到外部存储,并分享文件
众所周知,Android 11 使用了专属目录,并且强制启用。关于专属目录的介绍,这里不详细多说,因为官方文档已经很明确了,这里主要介绍我保存在外部存储根目录遇到的一些坑。专属目录,就是Android11为应用开辟的专属空间,APP将文件保存到专属目录,不再需要请求存储权限,直接就可以保存。并且其它应用无法访问专属目录里的文件,保证了用户的隐私安全。而我这里的需求不是将文件保存在专属目录里,也不是保存在媒体目录里,而是外部存储的根目录,新建一个文件夹,保存我的csv文件,并将csv分享出去。其实之前针原创 2021-09-28 16:00:47 · 10634 阅读 · 1 评论 -
Android必备依赖项
LiveData + ViewModeldef lifecycle_version = "2.2.0"implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"Roomimplementation "androidx.room:room-runti原创 2021-05-25 13:48:34 · 315 阅读 · 1 评论 -
mac安装flutter,安装android sdk
下载Flutter文件下载后解压文件,将解压后的Flutter文件夹拖到想要位置。打开terminal终端,将flutter文件夹拖到终端上,查看当前文件夹位置,例如 : /Documents/fluttercd到Documents文件夹cd ~/Documents千万不要cd到flutter文件夹下了,如果cd到flutter文件夹,下面命令就要去掉flutter/. 否则无需更改,直接复制下面命令即可。将flutter添加到路径:export PATH="$PATH:`pwd`/flut原创 2021-05-25 10:31:51 · 802 阅读 · 0 评论 -
kotlin MutableList synchronized
众所周知,ArrayList一不小心就会报ConcurrentModificationException错误,于是尝试用Collections.synchronizedCollection解决val tabList: MutableList = mutableListOf()tabList.add()…val list = Collections.synchronizedCollection(this)synchronized(list) {//…}...原创 2021-04-09 16:33:40 · 1132 阅读 · 0 评论 -
X5内核初始化的那些问题
最近呢,项目中要用到X5内核,加快webview的打开速度。还需要一个地理位置请求 onGeolocationPermissionsShowPrompt 在这里面允许地理位置。但是呢,在对应页面的Activity里才进行初始化,第一次打开时,可能要等个10多20秒,这是不可忍受的。(其实我能忍,但是产品当着我的面打开页面,并且抱怨怎么还没显示啊,我:…)但如果在Application进行初始化,打开Activity时,就有可能不弹出onGeolocationPermissionsShowPrompt 导原创 2021-04-09 11:13:10 · 2494 阅读 · 0 评论 -
Android Studio Log乱码
Help —— Edit Custom VM Options添加这句话:-Dfile.encoding=UTF-8重启Android Studio就行了原创 2021-04-09 10:36:34 · 290 阅读 · 0 评论 -
Navigation
多个Activity之间Navigation导航同一个Fragment,findNavController() 是不同的值因为 Fragment的findNavController() 等价于 Activity 的requireActivity().findNavController(R.id.nav_host_fragment)而不同Activity导航到同一个Fragment,它的 requireActivity() 是不一样的,可以用requireActivity().localClas原创 2021-04-05 14:09:06 · 440 阅读 · 0 评论 -
android存储媒体文件
java.lang.IllegalArgumentException: Failed to find configured root that contains /Pictures <paths> <root-path name="name" path="" /> </paths>参考:Android爬坑之旅之FileProvider原创 2021-03-26 14:52:18 · 207 阅读 · 0 评论 -
Flow
FilterFlow中的Filter,就像一个漏斗,将符合条件的值过滤到下一个操作中。所以filter中要返回一个boolean判断,为true到下一步,否则返回(1..5).asFlow() .filter { println("Filter $it") it % 2 == 0 } .map { println("Map $it") "string $it"原创 2021-03-17 13:00:32 · 133 阅读 · 0 评论 -
ApkTool
1. ApkTool1.1 ApkTool下载安装下载 apktool.bat下载 apktool_xxx.jar,最新版,重命名为 apktool.jar将这两个文件放到同一个文件夹下命令行进入文件夹1.2 反编译得到资源文件java -jar apktool.jar d -f Simpler.apk -o Simpler修改需要的values1.3 重新打包成apkapktool.bat b --use-aapt2 -o Simpler_carrie.apk Simpler原创 2021-03-08 14:12:35 · 1202 阅读 · 0 评论 -
android LinearLayout布局 拦截点击
要使布局上面的 ProgressBar 布局拦截下面的点击事件,使之不可点击跳转,只需设置ProgressBar Layout为 clickable 就行了。android:clickable="true"android:focusableInTouchMode="true"android:focusable="true"原创 2021-03-05 13:32:40 · 1575 阅读 · 0 评论 -
android11 webview无法打开本地目录文件,提示ERR_ACCESS_DENIED
问题在Android11设备上,突然无法用WebView打开本地的html文件,我的文件存储在 getDirs目录,无需请求权限也能访问的原因setAllowFileAccess官网文档解释:Enables or disables file access within WebView. Note that this enables or disables file system access only. Assets and resources are still accessible usin原创 2021-02-24 16:00:42 · 6845 阅读 · 5 评论 -
侧边栏NavigationView Drawerlayout遮罩
DrawerLayout 侧边栏打开时,顶部有一层遮罩,添加如下语句解决:app:insetForeground="@android:color/transparent"+++++<!-- 侧边栏 --><com.google.android.material.navigation.NavigationView android:id="@+id/nav_view" android:layout_width="330dp" android:layout_he原创 2021-02-19 11:23:31 · 319 阅读 · 0 评论 -
证书签名指纹
进入JDK/bin 目录cd C:\Program Files\Java\jdk-11.0.2\bin使用keytool工具,输入下面命令:keytool -list -v -keystore E:\xxx (你的打包apk的签名证书的路径)输入密码。如果你的签名里有多个别名,你会看到下面列出来的一串签名信息证书指纹就是SHA256...原创 2021-02-02 10:17:13 · 1724 阅读 · 0 评论 -
ViewStubProxy的使用
ViewStubProxy的介绍ViewStubProxy的使用ViewStubProxy 与 普通layout:ViewStubProxy 与 自定义view:<ViewStub android:id="@+id/vs_layout" android:layout_width="match_parent" android:layout_height="76dp" android:layout_marginTop="8dp" android:原创 2020-12-09 16:30:35 · 826 阅读 · 0 评论 -
创建及引用library
创建library依次点击 File > New > New Module > Android Library > Next打开library的build.gradle, 确认顶部第一行是apply plugin: 'com.android.library'双击setting.gradle,确保第一行是include ':app', ':login' // library名在APP中使用library打开build.gradle(Module:app),添加:原创 2020-12-03 15:16:05 · 194 阅读 · 0 评论 -
AndroidStudio快速获取SHA1
方法在AndroidStudio右边点击Gradle,在出现的界面里点击 项目名(root) —— Tasks —— Android —— 双击signingReport在AndroidStudio底部 Run面板可以看到SHA1:问题:如果双击了 Gradle signingReport 后没有看到SHA1文字,而是如下图这样的情况怎么解决?点击左侧 Toggle View按钮,即可:...原创 2020-12-02 15:51:52 · 449 阅读 · 0 评论 -
【学习】Android Architecture Components (一): Lifecycle-Aware Components
Best practices for lifecycle-aware componentsUI控制器 (activities and fragments) 要尽可能瘦。使用ViewModel来获得数据,通过观察LiveData来刷新UI.尝试编写数据驱动的用户界面,其中您的用户界面控制器的职责是在数据更改时更新视图,或将用户操作通知给ViewModel。把你的数据逻辑放在ViewMode...原创 2018-03-21 17:37:04 · 229 阅读 · 0 评论 -
Room & RxJava 的使用
原文链接异步查询返回 LiveData 或 RxJava的 Maybe, Single or Flowable.考虑如下UI场景:用户能查看和编辑用户名。用户信息被保存在数据库中。 为了从数据库中得到用户信息,我们使用如下查询方式:@Query(“SELECT * FROM Users WHERE id = :userId”)User getUserById(String us...翻译 2018-04-19 14:40:02 · 3607 阅读 · 0 评论 -
RxJava 2 与 Room 查询实操
从上一篇Room & RxJava 的使用引申而来的代码实际操作。 1. 定义一个数据库接口@Daopublic interface UserDao { @Query("select * from user") Flowable<List<UserEntity>> getUsers(); @Query("select * f...原创 2018-04-20 16:50:47 · 2890 阅读 · 0 评论 -
DataBinding onClick 的几种点击方式
有一个 ViewModel 类,有一个 xml,xml 绑定了 ViewModel .1. @{click}//xml:<Button android:layout_width="match_parent" android:layout_height="48dp" android:onClick="@{click}"/>//Vie...原创 2018-04-28 10:46:08 · 31508 阅读 · 1 评论 -
Room
占个坑先,待填原创 2018-04-28 14:44:42 · 205 阅读 · 0 评论 -
Room 在后台操作数据库
在本篇博文里使用了 AppDatabase(RoomDatabase), DataRepository, Room Dao, LiveData, ViewModel, 默认读者知道这些,本文对这些部分进行了省略.在Room中,对于 insert ,update, query 需要使用后台线程,否则就会报错:java.lang.IllegalStateException: Cannot acce...原创 2018-04-28 15:05:43 · 11325 阅读 · 1 评论 -
用 LiveData实现RecyclerView的点击事件
本文用到了:dataBinding、android架构组件在使用RecyclerView时,点击item事件,我们通常会写一个OnItemClickListener接口,然后回调监听。在这里我们用安卓架构组件的LiveData试一下吧~ 官方 todo-mvvm-live 示例里用了一个 SingleLiveEvent (继承 MutableLiveData):/** * A li...原创 2018-04-28 15:44:08 · 7252 阅读 · 0 评论 -
sqlite3 导出为csv
C:\Users\new>sqlite3 -header -csv E:\\cps18_424.db "select * from MAIN_ICON" >E:\\main.csv 去掉 -header 可以忽略第一行的标题参考来源:https://www.cnblogs.com/beckzhu/p/6543526.html...原创 2018-07-25 15:09:45 · 2069 阅读 · 1 评论 -
【学习笔记】Room的使用
@Query注解 Room仅支持被命名的绑定参数:name来避免方法参数和query绑定参数之间的混淆。Room will automatically bind the parameters of the method into the bind arguments. This is done by matching the name of the parameters to the n...原创 2018-03-23 16:45:36 · 1889 阅读 · 0 评论