Android 获取 Apk 包的信息
12345678910111213141516171819202122232425262728/** * 获取apk包的信息:版本号,名称,图标等 * * @param absPath apk包的绝对路径 * @param context * @return */fun apkInfo(absPath: String?, context: Context): PackageInfoBean? { val pm = context.packageManager val pkgInfo = pm.getPackageArchiveInfo(absPath!!, PackageManager.GET_ACTIVITIES) ?: return null val appInfo = pkgInfo.applicationInfo /* 必须加这两句,不然下面icon获取是default icon而不是应用包的icon */ appInfo.sourceDir = absPath appInfo.publicSourceDir = ab ...
Android 中代码安装 Apk
前言由于公司开发的一款清理 App 中有一个功能是安装包管理,需列出所有的未安装的安装包,当用户点击安装包时会跳转到安装该 Apk 文件的页面。经一番查阅,以此记录。
在 AndroidManifest 指定 FileProvider12345678910<!-- Android 7.0 文件访问的兼容处理 --><provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.FileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" and ...
SpringBoot 项目中如何查看 SpringBoot 版本和 Spring 的版本
方式一:通过代码查看12345678public static void main(String[] args) { System.out.println(SpringBootVersion.getVersion()); System.out.println(SpringVersion.getVersion());}// 返回// 2.1.10.RELEASE// 5.1.11.RELEASE
方式二:在 pom.xml 中查看123456<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/></parent>
原文链接:https://www.cnblogs.com/sh ...
电商 SKU 表设计
参考京东商品详情
可以看出来一个商品有多个属性(颜色、尺码),每个属性对应多个规格,所有的属性规格必选其一组合起来为一个 SKU
设计表123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869# 基础产品表CREATE TABLE `product`( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '产品名', `created_at` timestamp ...
Android 将时长毫秒转化为分钟和秒
1234567891011121314151617181920/** * Android 音乐播放器应用里,读出的音乐时长为 long 类型以毫秒数为单位,例如:将 234736 转化为分钟和秒应为 03:55 (包含四舍五入) * @param duration 音乐时长 * @return */public static String timeParse(long duration) { String time = "" ; long minute = duration / 60000 ; long seconds = duration % 60000 ; long second = Math.round((float)seconds/1000) ; if( minute < 10 ){ time += "0" ; } time += minute+":" ; if( second < 10 ){ ...
idea 复制粘贴 SpringBoot 项目配置文件不生效
在工作中另起一个 SpringBoot 项目时由于不想重新创建项目,所以就复制了之前的项目,然后一顿操作把项目包名改掉、删除无用文件定等后,发现 idea 无法识别到这是一个 SpringBoot 项目了,一开始以为是 Maven 配置文件出了问题,经过 mvn clean、mvn install 后还是不行。
然后使用 mvn spring-boot:run 发现可以启动项目,后来试了一下 idea 的 Add as Maven project 就可以识别到了
复制下来的项目
解决办法–右键问题项目的pom文件 add就好啦–
原文链接:https://blog.csdn.net/yyins/article/details/106757918
Android 通知使用权(NotificationListenerService)的使用
简介当下不少第三方安全APP都有消息管理功能或者叫消息盒子功能,它们能管理过滤系统中的一些无用消息,使得消息栏更清爽干净。其实此功能的实现便是使用了Android中提供的通知使用权权限。Android4.3后加入了通知使用权NotificationListenerService,就是说当你开发的APP拥有此权限后便可以监听当前系统的通知的变化,在Android4.4后还扩展了可以获取通知详情信息。下面我们来看看NotificationListenerService的具体使用。
使用新建一服务类,使它继承NotificationListenerService,并实现两个重要的方法:
kotlin 版本12345678910111213141516171819202122232425import android.service.notification.NotificationListenerServiceimport android.service.notification.StatusBarNotificationclass NotificationListener : Notific ...
Android 监听应用的卸载与安装
前言很多时候,我们都需要监听应用的卸载和安装并做相应的事件,比如:应用卸载后,删除安装包、清除垃圾、弹出网页;应用安装后,刷新某些事件,等等,都是非常有用的。
我这里的应用场景是在做清理app的过程中有一个软件管理,当用户卸载掉其他应用后需要弹框提示用户卸载什么app成功。
新建监听类1234567891011121314151617181920212223242526package com.cssq.clean.receiverimport android.content.BroadcastReceiverimport android.content.Contextimport android.content.Intentimport android.content.pm.PackageManagerimport com.google.gson.Gsonimport com.hjq.toast.ToastUtilsclass AppReceiver : BroadcastReceiver() { override fun onReceive(context: Cont ...
Android 获取手机存储空间类
Kotlin 版本1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import android.content.Contextimport android.os.Environmentimport android.os.StatFsimport android.text.format.Formatterobject StorageUtil { /** * 获取手机内部存储空间 */ fun getInternalMemorySize(context: Context?): String? { val file = Environment.getDataDirectory() val statFs = StatFs(file.path) val blockSiz ...
Android 详解 RelativeLayout(相对布局)
这是一个非常常用的布局,可以通过相对定位的方式让控件出现在布局的任何位置。新建 UILayoutTestTwo 工程,修改 activity_main.xml 中的代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button_one" android:lay ...