android intent安装apk

/**
     * 安装apk
     *
     * @param context
     * @param apkPath
     */
    public static void installApk(Context context, String apkPath) {
        try {
            /**
             * provider
             * 处理android 7.0 及以上系统安装异常问题
             */
            File file = new File(apkPath);
            Intent install = new Intent();
            install.setAction(Intent.ACTION_VIEW);
            install.addCategory(Intent.CATEGORY_DEFAULT);
            install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                Uri apkUri = FileProvider.getUriForFile(context, "com.jxzg.jxzgapp.fileprovider", file);//在AndroidManifest中的android:authorities值
                Log.d("======", "apkUri=" + apkUri);
                install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件
                install.setDataAndType(apkUri, "application/vnd.android.package-archive");
            } else {
                install.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
            }
            context.startActivity(install);
        } catch (Exception e) {
            Log.d("======", e.getMessage());
            Toast.makeText(context, "文件解析失败", Toast.LENGTH_SHORT).show();
            deleteFile(apkPath);
        }
    }

androidManifest.xml 里面注册provider

<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.chao.app.fileprovider"
        android:grantUriPermissions="true"
        android:exported="false">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
 </provider>

需要添加权限

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

在/res/xml/下新建 file_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <paths>
        <external-path path="" name="download" />
    </paths>
</resources>

原文地址:https://www.cnblogs.com/rchao/p/9200774.html

时间: 2024-11-09 00:42:23

android intent安装apk的相关文章

Android N安装apk报错:android.os.FileUriExposedException

StackOverflow: http://stackoverflow.com/questions/38200282/android-os-fileuriexposedexception-file-storage-emulated-0-test-txt-exposed 1.在AndroidMainifest.xml文件中添加: <provider android:name="android.support.v4.content.FileProvider" android:auth

Android 下载安装APK

代码安装apk Intent i = new Intent(Intent.ACTION_VIEW); String filePath = "/sdcard/XXX.apk"; i.setDataAndType(Uri.parse("file://" + filePath),"application/vnd.android.package-archive"); context.startActivity(i); 复制代码 程序卸载 Intent i

Android 代码安装APK文件

代码安装APK文件 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");

Android 静默安装Apk

参考链接 android 静默安装 [Android]实现静默安装APK的两种方法

android 6.0 Intent 安装apk闪退

需求描述: 利用android系统自带的DownloadManager下载apk文件,并且打开安装界面. 问题描述: 关于DownloadManager的使用网上有很多例子,在此不啰嗦.下载完成之后在android6.0(api=23)环境下打开安装界面出现闪退(确认已经在AndroidManifest.xml文件中配置配置权限).在Android4.4(api=19) 环境下正常.因为只有两台android手机,没有尝试android6.0之前的其他系统.使用代码如下: public stat

关于部分Android手机安装apk,无法获取正常的logo

最近出现过类似的问题,主要出现是在,MediaPad X1 7.0和MediaPad M1 8.0. 发布应用的时候明明配置好了图标的,但是始终找不到原因,郁闷了好几个小时,也浪费了好几个小时. 如果华为的系统开发的哥们,看到了做个优化吧,为了华为的品质,多写几行代码吧. ---------------------------------------------------------- 一.首先看下这篇blog,这个是缓存问题,是主要原因. http://bbs.csdn.net/topics

Android Studio实现APK的更新、下载、安装

先不讲那么多看效果图: 下面来讲解一些更新CODE,原理大家都知道,不废话,直接上代码.里面有一些是我自己做的测试例子,所以大家可以直接删掉就好了 第一个:activity_main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3

Android 获取android安装apk框的安装状态(如点击取消、返回)

最近鼓捣android,碰到个问题,因为没有root权限,需要调用Intent安装apk,但需要获取用户是否安装了(如,用户点击了返回或取消),查了很多文章,最后可以解决,但有瑕疵,解决方法如下: public static void installPackage(Context context, File file, int requestCode) { // 安装之前先记录预安装APK文件的名字,以用于返回结果时根据requestCode获取安装的apk packageName MainAc

【树莓派】在树莓派的Android系统中安装APK应用

树莓派3 Android TV安装APK应用教程 本文摘自:http://www.mz6.net/news/android/6867.html 树莓派3 Android TV怎样安装软件?对于熟悉ADB的网友来说安装过程并不复杂,通过ADB远程连接到树莓派,然后使用ADB命令安装应用,当然小白也可以按照下面的教程学会怎样安装应用. 树莓派3安装Android TV系统图文教程 http://www.mz6.net/news/android/6865.html 树莓派3安装APK应用教程 1.首先