Android开发 APP代码安装APK安装包

这篇具有很好参考价值的文章主要介绍了Android开发 APP代码安装APK安装包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求

 在Android 项目上架后,需要迭代更新,一般更新方式有:手动下载apk包手动安装、通过浏览器下载手动安装、APP内部下载内部安装。本文章就只讲解APP内部下载内部安装这个APP 更新方式。虽然网上关于APP内部apk安装的代码和文章很多,但太过于绝对,没有考虑一些特殊情况。此文章就是对一些特殊情况处理和代码的说明。

二、权限

在AndroidManifest.xml注册文件中,添加安装apk包权限

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

虽然在在AndroidManifest.xml添加了权限,但还是需求判断和授权,而且在Android 8.0(即Android O) 之前,设置 中的 允许安装未知来源 是针对所有APP的,只要开启了,那么所有的未知来源APP都可以安装。但是,8.0之后,将这个权限挪到了每一个APP内部,这样提高了手机的安全性。

注意:这个权限是需要用户跳转到系统的未知来源权限界面 ,手动开启。所以授权方式和普通申请授权是有区别的。

我这里是以APP 私有空间存储apk 文件,所以没有使用外部存储权限,如果apk需要存储在外部空间记得手动请求外部读写权限。

boolean isInstallPermission = getPackageManager().canRequestPackageInstalls();
 if(!isInstallPermission){
   //权限没有打开则提示用户去手动打开
   openInstallPermission()
 }

/**
 * 跳转到设置-允许安装未知来源-页面
 */
private void openInstallPermission() {
 Intent intent = null
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
         intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES
                        ,Uri.parse("package:" +getPackageName()));   
}else {
intent = new Intent(Settings.ACTION_SECURITY_SETTINGS
                        ,Uri.parse("package:" +getPackageName()));

   }

        startActivityForResult(intent, INSTALL_PERMISS_CODE);
    }




@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK && requestCode == INSTALL_PERMISS_CODE) {
            
        }
    }

三、配置内容提供者

注意:<provider> 的name 在一些情况 可能重复 造成冲突,如果已有直接  则我们需要一个自定义的FileProvider,自定义FileProvider 只需继承FileProvider 即可 。当然name就是使用我们自定义的xxxxFileProvider地址。

authorities="自已的包名.fileprovider" ,自己的包名获取 可以通过${applicationId}来获取,如 “${applicationId}.fileprovider” ,当然不一定使用“fileprovider” 也可以 但要注意保持和下面安装代码一致就可以了。

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="自已的包名.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>

android.support.FILE_PROVIDER_PATHS 注意不能随意修改,它是常量。resource:就是引用下面的配置文件的地址,文件保存在项目app/src/main/res文件夹下xml文件夹里,并新建一个filepaths.xml文件,编写需要安装apk 的存在路径或者上级路径,当然文件名可以自定义。

我这里是根目录下,name 可以自定义,path 则需要根据实际目的来,我这里为了方便采用了根目录。

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <path>
        <root-path name="files_apk"
            path="/"/>
    </path>

</paths>

四 、代码安装APK

注意:“.fileprovider” 需要和<provider>的authorities的后缀一致。newApkPath就是你需要安装apk的绝对地址,其他消息除“.fileprovider” 信息可以自定义外,其他皆不需要更改,自定义时需要和AndroidManifest.xml 注册文件 一致。


        Intent intent = new Intent(Intent.ACTION_VIEW);
        File apkFile = new File(newApkPath);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            Uri uri = FileProvider.getUriForFile(mContext, mContext.getPackageName() + ".fileprovider", apkFile);
            intent.setDataAndType(uri, "application/vnd.android.package-archive");
        } else {
            intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
        }
        startActivity(intent);
   

如果对您有一些意义,希望您给博主一些鼓励(点赞、关注、收藏),如果有错误欢迎大家评论。文章来源地址https://www.toymoban.com/news/detail-403633.html

到了这里,关于Android开发 APP代码安装APK安装包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在 WebStorm 中开发 uni-app - 用vue2实现手机APP(apk) + 微信小程序项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2023年04月15日
    浏览(74)
  • 在 WebStorm 中开发 uni-app - 用vue2实现手机APP(apk) + 微信小程序项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月05日
    浏览(90)
  • WebStorm开发uni-app ,用vue2实现手机APP(apk) + 微信小程序多端项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月11日
    浏览(69)
  • Android App从备案到上架全过程

    不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。 首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后

    2024年02月03日
    浏览(50)
  • uniapp开发APP从开发到上架全过程(一)

    前端时间受朋友委托帮他开发了一款APP,综合考虑了下,没有上原生,使用了uniapp这一套技术栈来进行开发 uniapp是dcloud推出的一套跨端前端解决方案,可以通过一套代码生成小程序、安卓、IOS、H5等代码,对于中小项目来说是一套绝对的效率利器 前端采用uniapp 后端使用Thin

    2024年02月02日
    浏览(41)
  • Android 获取app(apk)签名

    以上方法参考微信开放平台的-获取安装到手机的第三方应用签名的apk包  源码  

    2024年02月16日
    浏览(47)
  • android App内下载apk 并升级

    主要代码 1.下载apk代码;安装APP权限申请;3.文件存储; 兼容Android 12 版本 存储权限处理: 1.新建xml文件; 2.manifest配置文件: 注,可运行下载链接 APP内升级代码源码

    2024年02月13日
    浏览(36)
  • Android开发的《大众设计App》项目介绍

    该《大众设计App》的功能介绍如下: 1、登录注册功能 登录、注册页面效果如下所示: 2、用户信息修改功能 (各个修改功能均已实现,因修改栏目较多不再逐一展示) 3、设计衣服的功能 (也是本App的核心功能) 页面效果如下图。分为上下两个区,上面部分是预览设计效果

    2024年02月02日
    浏览(36)
  • 移动开发项目 Android Studio 健康助手APP

    健康助手系统是一款便捷软件,旨在通过提供多方面的的健康便捷的管理服务,让用户的生活更健康,更便捷。用户可以在健康助手APP上购买不同的体检套餐,预约医生,使用地图查找药房等的位置,浏览网页了解健康知识,传播健康文化。 (1)为了更好地了解自己的身体

    2024年02月03日
    浏览(71)
  • Android项目导出apk

    1.基本步骤如下。 第1步:选择“构建”,设置生成apk。 第2步:勾选apk。 第3步:点击生成一个新的密钥。 第4步:输入密钥的相关信息,随便输入。 第5步:上一步完成之后会自动填写如下图所示的内容。选中记住密码。 第6步:选择如下图所示的。 第7步:等一会可以生成一

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包