shell命令安装

/*** 安装apk** @param path apk文件路径*/
public void installAPK(String path) {Log.i(TAG, "installAPK:" + path);com.dlc.xiaohaitun.utils.ShellUtils utils = new com.dlc.xiaohaitun.utils. ShellUtils();if (utils.isRoot()) {LogPlus.e("###已經root, 開始 pm install ");utils.run("pm install -r " + path, 600 * 1000);} else {spm("没有root");}
}

1、Android 8.0已上版本需要添加必要权限

依赖

implementation 'com.github.lovetuzitong:MultiImageSelector:1.2'
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

2、适配Android 10.0所需xml文件——file_paths

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"><paths><!--external-path用来指定Uri共享的name属性的值可以随便填path属性的值表示共享的具体路径,这里设置为空代表将整个SD卡进行共享,当然你也可以共享存放的图片地址--><external-path name="my_images" path=""/></paths></resources>

3、适配Android 10.0所需provider

<!--authorities是自定义的,调用是复制即可-->
<providerandroid:name="androidx.core.content.FileProvider"android:authorities="a.b.c.fileprovider"android:grantUriPermissions="true"android:exported="false"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" />
</provider>

4、根据Android版本,不同安装配置

int version = android.os.Build.VERSION.SDK_INT;
if (version > 24) {//android 7.0-10.0及以上版本installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);installIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);installIntent.setDataAndType(apkUri, "application/vnd.android.package-archive");
} else {//android 5.0-7.0installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);installIntent.setDataAndType(Uri.fromFile(updateFile), "application/vnd.android.package-archive");}
startActivity(installIntent);

5、完整demo,实现下载与安装:https://download.csdn.net/download/meixi_android/12376770

6、在线交流解决下载安装bug:QQ1085220040

方法二

//在线更新
implementation ('com.teprinciple:updateapputilsx:2.3.0'){exclude group: 'org.jetbrains:annotations:13.0'
}
    public void postApp(AppDownloadBean bean) {//        if (!UserHelper.get().getSettingBean().isWifiUpdate()) {UpdateConfig updateConfig = new UpdateConfig();updateConfig.setNeedCheckMd5(false);updateConfig.setNotifyImgRes(R.mipmap.ic_launcher);updateConfig.setForce(bean.getEnforce() == 1);
//            updateConfig.setForce(true);updateConfig.setDebug(false);updateConfig.setAlwaysShowDownLoadDialog(true);UiConfig uiConfig = new UiConfig();uiConfig.setUiType(UiType.PLENTIFUL);uiConfig.setCustomLayoutId(R.layout.view_update_dialog_plentiful);UpdateAppUtils.getInstance().apkUrl(bean.getDownloadurl()).updateTitle(bean.getTitle()).updateContent(bean.getContent()).uiConfig(uiConfig).updateConfig(updateConfig).setOnInitUiListener(new OnInitUiListener() {@Overridepublic void onInitUpdateUi(@Nullable View view, UpdateConfig updateConfig,  UiConfig uiConfig) {TextView mTitle = view.findViewById(R.id.tv_update_title);TextView mContent = view.findViewById(R.id.tv_update_content);mTitle.setText(bean.getTitle());mContent.setText(Html.fromHtml(bean.getContent()));}}).setUpdateDownloadListener(new UpdateDownloadListener() {@Overridepublic void onStart() {}@Overridepublic void onDownload(int progress) {}@Overridepublic void onFinish() {}@Overridepublic void onError(Throwable e) {}}).update();//        }}/*** 获取版本号** @return 当前应用的版本号*/public int getVersion(Activity activity) {try {PackageManager manager = activity.getPackageManager();PackageInfo info = manager.getPackageInfo(activity.getPackageName(), 0);return info.versionCode;} catch (Exception e) {e.printStackTrace();return 0;}}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="280dp"android:layout_height="wrap_content"android:background="@drawable/bg_update_dialog"android:paddingBottom="10dp"><ImageViewandroid:id="@+id/iv_update_logo"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginTop="15dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:srcCompat="@drawable/ic_kzf"/><TextViewandroid:id="@+id/tv_update_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:textColor="@color/text_title"android:textSize="16sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/iv_update_logo"tools:text="版本更新啦!"/><ScrollViewandroid:id="@+id/scrollView2"android:layout_width="match_parent"android:layout_height="90dp"android:layout_marginTop="10dp"android:overScrollMode="never"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/tv_update_title"><TextViewandroid:id="@+id/tv_update_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="top"android:gravity="start"android:lineSpacingExtra="5dp"android:paddingLeft="20dp"android:paddingRight="20dp"android:textColor="@color/text_content"android:textSize="14sp"tools:text="1、快来升级最新版本\n2、这次更漂亮了\n3、快点来吧"/></ScrollView><TextViewandroid:id="@+id/btn_update_sure"android:layout_width="0dp"android:layout_height="35dp"android:layout_marginStart="20dp"android:layout_marginTop="10dp"android:layout_marginEnd="20dp"android:background="@drawable/bg_btn_lv_selector"android:gravity="center"android:text="@string/update_now"android:textColor="@color/white"android:textSize="14sp"app:layout_constraintBottom_toTopOf="@+id/btn_update_cancel"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/scrollView2"app:layout_goneMarginBottom="10dp"/><TextViewandroid:id="@+id/btn_update_cancel"android:layout_width="0dp"android:layout_height="35dp"android:layout_marginStart="20dp"android:layout_marginTop="5dp"android:layout_marginEnd="20dp"android:gravity="center"android:text="@string/update_cancel"android:textColor="@color/text_content"android:textSize="14sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/btn_update_sure"app:layout_goneMarginTop="10dp"/></androidx.constraintlayout.widget.ConstraintLayout>
{
    "code":1,
    "msg":"app下载",
    "time":"1615343899",
    "data":{
        "id":9,
        "title":"Android回收员端",
        "downloadurl":"http://szhdljhsxshg.app.xiaozhuschool.com/uploads/20200831/b995d216dc9297ca9350ac48ee7193a0.apk",
        "newversion":"139",
        "packagesize":"1",
        "content":"<p>版本2升级测试</p>",
        "enforce":0,
        "brief":"版本更新啦!"
    }
}

Android应用安装apk版本升级,适配Android 8.0和Android 10.0下载安装,shell命令安装APK相关推荐

  1. pytorch环境安装(配置:CUDA11.1+CUDNN11.1+torch.9.0+cu111+torchvision0.10.0+cu111+torchaudio==0.9.0)

    文章目录 1.下载CUDA 2 .下载CUDNN 3.CUDA安装 4.安装CUDNN 5.下载pytorch 6.安装pytorch 本文的显卡是 NVIDIA GeForce RTX 3060 L ...

  2. ubuntu18.04安装pytorch1.9.0和torchvision0.10.0

    一.利用anaconda创建自己的虚拟环境: 创建新的环境,命令为:conda create -n 虚拟环境名称 python版本 图中所示,创建的虚拟环境名称为pytorch1.9,python版本 ...

  3. 程序员快放弃 Android 9.0 吧,10.0 正在来的路上!

    本文经授权转自终端研发部(ID:codeGoogler) 目前,美国 Google公司的 AndroidP (安卓9.0),已经正式全面推出有几个多月了.众多手机品牌厂商也都在积极的进行更新适配 An ...

  4. android手机线控失效,耳机线控失效 苹果iOS 10.0.2终于修好了

    苹果刚刚发布了最新iOS 10系统的一次小幅更新,主要以修复iPhone和iPad用户的错误为主,其中最受关注的就是修复了Lightning接口EarPods耳机的连接错误. 本次更新的版本号为iOS ...

  5. 【FPGA——工具篇】:Modelsim SE-64 10.4下载、破解、安装过程

    Modelsim SE-64 10.4破解安装过程 百度云链接:https://pan.baidu.com/s/1ONbjNLajFKzHDJ9bs4gz6Q 密码:by0p 压缩包解压密码:Lily ...

  6. 卸载linux 安装win10,如何卸载(或重新安装)Windows 10的Ubuntu Bash Shell | MOS86

    Windows 10要卸载它或重置其状态以获得一个新的Linux环境,你 相关文章图片1tupian如何在Windows 10上安装和使用Linux Bash Shell 以下命令可以在命令提示符窗口 ...

  7. 苹果iPhone手机如何安装Tiktok?最新IOS苹果TikTok抖音国际版下载免拔卡安装使用教程

    安装教程: 1,下载''Tiktok''客户端软件(点击下载). 2,下载并安装''签名软件''. 3,使用刚下载的''签名软件''对已下载的''Tiktok''进行''签名处理''. 4,签名完成后 ...

  8. Windows10+Cuda10.0.130+Cudnn 10.0出现CUDA安装失败的情况

    安装Cuda前需要提前安装好VS 2017 解决方案: 第一步:安装CUDA时,选择自定义安装. 第二步:取消勾选CUDA中的Visual Studio Integrantion 安装完成

  9. linux15.10安装教程,ubuntu 15.10 下载|Linux平台操作系统 ubuntu v15.10 官方下载工具(附安装教程)[网盘资源] - 3322软件站...

    Ubuntu是一款基于Linux平台的操作系统,很受桌面用户的欢迎,同时它也是第一款能同时运行在手机.平板.桌面和电视的操作系统,今天小编为大家带来的是官方最新Linux平台操作系统ubuntu 15 ...

最新文章

  1. 餐巾计划问题 线性规划与网络流24题之10 费用流
  2. 华硕笑傲珠峰,网络口碑营销巧打奥运擦边球
  3. 记一次Weblogic连接池泄露的修复过程
  4. 解决IE8下载停留在99%的脚本
  5. react学习(44)----只更新它需要更新的部分
  6. java 嵌套调用_Java嵌套类的使用
  7. 搜狐视频怎么更改头像
  8. Android ContextCompat 使用详解
  9. mysql 读取oracle_RobotFramework读取mysql和oracle数据库
  10. 计算机关键性检测的部件是,试论计算机硬件关键技术的若干问题分析
  11. 国内滴滴面临“讨伐”,国外Uber日子更难过!活该不?
  12. 苹果收购倒闭智能家居安防初创公司 Lighthouse AI 专利...
  13. oracle数据库服务器c盘满,Oracle数据库服务器磁盘满导致数据库无法登陆,通过清理归档文件解决...
  14. CSS中的position 和z-index
  15. android listview 数据混乱,求解,listView里面嵌套listView数据显示混乱
  16. 生词生词生词生词[1]
  17. 黑群晖二合一已损毁_黑群晖二合一ghost安装教程(蜜獾超存可用)
  18. 百度收录提交 网站快速收录提交方法【附工具】
  19. matlab设置中英文混合字体,word排版技巧:如何分别设置中英文混排的字体
  20. WireShark 分析RTP丢包率

热门文章

  1. 工作69:发布商品页面
  2. 前端学习(2307):react之props和state
  3. 前端学习(1854)vue之电商管理系统电商系统之git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed t
  4. 前端学习(606):计算机基础
  5. 前端学习(159):meta
  6. 第八十四期: Java、Web 和移动程序员学习的 12 个框架
  7. 实例26:python
  8. Qt 编写应用程序升级的配置文件json 生成工具
  9. 全网首发!2020年AI、CV、NLP顶会最全时间表!
  10. 基于墨刀实现的短视频分享软件原型设计