zoukankan      html  css  js  c++  java
  • 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.chao.app.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>
  • 相关阅读:
    codevs 1115 开心的金明
    POJ 1125 Stockbroker Grapevine
    POJ 2421 constructing roads
    codevs 1390 回文平方数 USACO
    codevs 1131 统计单词数 2011年NOIP全国联赛普及组
    codevs 1313 质因数分解
    洛谷 绕钉子的长绳子
    洛谷 P1276 校门外的树(增强版)
    codevs 2627 村村通
    codevs 1191 数轴染色
  • 原文地址:https://www.cnblogs.com/rchao/p/9200774.html
Copyright © 2011-2022 走看看