-
2021-05-28 09:03:37
1 若把APK文件保存到应用程序的files目录下,则一定注意保存时使用 FileOutputStream os = openFileOutput(fileName, MODE_WORLD_READABLE);
特别注意MODE_WORLD_READABLE,否则APK文件会因为权限问题无法安装
2 安装时一定要使用 intent.setDataAndType(Uri.fromFile(new File(getFilesDir() + "/" + fileName)), "application/vnd.android.package-archive");
而不要使用intent.setDataAndType(Uri.parse("file://" + fileName), "application/vnd.android.package-archive");
注意,一个是Uri.fromFile,一个是Uri.parse
具体原因未知
原文:http://www.cnblogs.com/bloodofhero/p/5013456.html
更多相关内容 -
android10调用安装程序安装apk
2021-12-10 19:17:06android10 调用安装程序 安装apk目前在写android期末作业,想写一个华为应用商店那样的app,自建了服务器之后,用了xutil的文件下载功能把apk下载下来,但是当需要自动安装时总是调用不了安装程序
网上的一些方法很多已经老旧过时了,几乎没有几篇有用的,我在搜了几天后终于找到了方法,分享一下,防止更多人踩坑,本人的手机是荣耀9x,系统是安卓10的,可以成功调用安装。
1.首先添加授权,
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.REPLACE_EXISTING_PACKAGE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
然后再<application ......>中添加
android:requestLegacyExternalStorage="true" android:usesCleartextTraffic="true"
这一堆权限添加下来准没问题
2.然后还要在<application>......</application>中添加这样一串代码
只需要修改authorities就可以了
<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/file_paths" /> //这个是一个xml文件,顾名思义是文件路径用的 //AS中点击alt+enter自动建立file_paths.xml </provider>
3.找到file_paths.xml 一般就在res目录下
就是这个
把path修改为你的软件保存的目录
<resources> <root-path name="app" //不需要改 path="/sdcard/holimy" //你下载的软件保存的目录 /> </resources>
4.之后就是调用安装程序了
这里修改软件的路径
然后让那一串字符与前面对应
Intent installIntent=new Intent(); installIntent.setAction(Intent.ACTION_VIEW); installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); installIntent.addCategory(Intent.CATEGORY_DEFAULT); File f=new File("/sdcard/holimy/dq1.apk"); //找到下载的文件路径 String type="application/vnd.android.package-archive"; 如果是android7之后 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Uri uri = FileProvider.getUriForFile(context, "包名.fileprovider", f);//这一部分要与前面对应 installIntent.addFlags(installIntent.FLAG_GRANT_READ_URI_PERMISSION); installIntent.setDataAndType(uri, type); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { boolean hasInstallPermission =getPackageManager().canRequestPackageInstalls(); if (!hasInstallPermission) { startInstallPermissionSettingActivity(); } } } else { installIntent.setDataAndType(Uri.fromFile(f), type); } startActivityForResult(installIntent,0); android.os.Process.killProcess(android.os.Process.myPid());//关闭程序
@RequiresApi(api = Build.VERSION_CODES.O) private void startInstallPermissionSettingActivity() { //注意这个是8.0新API Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }
这样以来
就可以调用安装程序了
其中就是路径需要注意一下,看了网上许多人在路径中都是用了
Environment.getExternalStorageDirectory()
对于这个不太懂,一开始我在new File()中使用的是Environment.getExternalStorageDirectory()+"holimy/dq1.apk"
好像可以找到,但是却不能调用安装
我在后来改成了绝对路径终于可以运行了
本人只了解到了方法,对于其中的一些道理了解的还不是很深刻
想要更深入的了解请参考(看了那么多,感觉只有这两篇比较有用)
Android app更新适配安卓10、11版本_LaughingHe的博客-CSDN博客_适配安卓10
Android11 下载APK并安装_~随心~的博客-CSDN博客_android11安装apk
最后别忘记允许权限
-
Android安装失败(应用未安装,该软件包似乎已损坏)
2021-05-28 08:12:26一、描述最近调试一个第三方SDK,代码改动也挺大,这两天准备发个版本的时候,打包出来的APK想覆盖线上版本的试试,覆盖安装的时候居然提示下图所示,该软件包似乎已损坏,这让我看的一脸懵逼,什么原因也没说。...一、描述
最近调试一个第三方SDK,代码改动也挺大,这两天准备发个版本的时候,打包出来的APK想覆盖线上版本的试试,覆盖安装的时候居然提示下图所示,该软件包似乎已损坏,这让我看的一脸懵逼,什么原因也没说。
二、解决
原因:
因为接入第三方SDK的时候,因需求调整了build.gradle文件下的targetSdkVersion版本,线上版本的targetSdkVersion是24,如今被我改成22了,所以低版本的targetSdkVersion是无法覆盖安装高版本的targetSdkVersion的。
解决方法:
把当前项目的targetSdkVersion版本调整成跟线上版本一样,或者高于线上的,不然覆盖安装是会报错的。
targetSdkVersion 24
三、解决流程
上面已经公布问题的原因和解决方案,具体的解决问题流程有兴趣的往下面看
(1)刚发现问题的时候,怀疑网络不好的原因导致QQ传输到手机上的APK不完整,所以损坏了,但是测试后排除了这个问题
(2)之后就根据提示的关键字搜百度,谷歌了,大部分的答案都需要我在打包的时候勾选以下的V1 和 V2,但是我的这两个选项是灰色的,我的gradle版本比较低是2.2.3的,百度上说要在2.3.3以上才可以勾选,因为项目库的原因,调整gradle后影响太大,这个方案也不采纳了。
(3) 之后想七想八的方法都试了一遍,都没什么效果,只能乖乖的还是拿着关键字去查百度,后面看到一篇文章里有用到命令去安装Apk,一下子就想起来了,可以用命令安装啊,它是会报错误信息的,果断就用命令去重装了一下apk,报了以下的错误
>>adb install -r 231.apk
Failed to install 231.apk: Failure [-26: Package com.example.test new target SDK 22 doesn't support runtime permissions but the old target SDK 24 does.]
一看命令就想到了,target版本的问题了,之前修改过这个版本,再去master分支上看下线上的版本是多少,果然当前版本比线上版本低了,八成是这个原因了,所以马上把targetSdkVersion改成跟线上的版本一样后,打包覆盖安装就成功了,这么简单的问题找了那么久也是醉了。
也顺便找到一个跟我这个一样问题的小伙伴发的文章targetSdkVersion 更改的问题,这文章标题起的,能起的明显点吗,我查找问题根本不会找到这种文章。。
四、总结
平时有遇到的Bug问题,希望大家都能一起分享出来.
-
java实现获取安卓设备里已安装的软件包
2020-09-03 05:34:13本文给大家介绍的是如何获取设备中已经安装的应用软件包的代码,其核心方法原理很简单,我们通过Android中提供的PackageManager类,来获取手机中安装的应用程序信息 -
Android Package Installer:一个独立于平台的apk安装程序应用程序!-开源
2021-05-27 09:51:46这是一个与平台无关的Android软件包安装程序,可让您直接从计算机安装android应用程序。 所有您需要做的是将apk文件复制到工作文件夹中,并输入文件名,后跟.apk扩展名。.希望您会喜欢使用此软件。 -
Android该软件包与具有同一名称的现有软件包存在冲突错误导致安装失败
2022-01-07 11:00:26解决方法:如果直接用Androidstudio生成的默认的debug.keystore 却出现安装失败的问题,应该是换了电脑,或者上次是另外的同事进行了apk的打包工作。所以首先删除自己C盘下user文件下的.android文件夹下的debug....原因:两个apk包的签名文件不一样。
解决方法:如果直接用Androidstudio生成的默认的debug.keystore 却出现安装失败的问题,应该是换了电脑,或者上次是另外的同事进行了apk的打包工作。所以首先删除自己C盘下user文件下的.android文件夹下的debug.keystore文件(记得保存),然后换成之前打包apk电脑上的debug.keystore文件,重新打包就可以安装了。
建议:在公司或者团队开发Android APP时,不管是Debug还是Release打包时一定要统一签名文件,就不会出现上面的问题了。
-
功能齐全的BitTorrent客户端软件包和实用程序-Android开发
2021-05-26 08:27:45torrent该存储库在Go中实现了与BitTorrent相关的软件包和命令行实用程序。 重点是用作其他项目的库。 自2月下旬以来,下游服务一直在24/7的生产环境中使用该文件。该存储库在Go中实现了与BitTorrent相关的软件包和... -
Android程序中安装其它软件包
2012-03-06 16:57:41应用程序中有时需要调用其它软件,但有时用户没有安装需要调用的软件,为方便用户使用,以下例程实现了半自动化的引导用户安装。 -
通过指定软件包名称直接从Google Play商店直接下载Android应用程序的命令行工具(需要进行一次一次性配置)...
2021-05-25 17:27:09PlaystoreDownloader一种命令行工具,可直接从Google Play商店下载Android应用程序。 PlaystoreDownloader是直接从Google Play S下载Android应用程序的工具PlaystoreDownloader是直接从Google Play商店直接下载... -
android - 无法安装以下Android SDK软件包,因为某些许可证尚未被接受 - 堆栈内存溢出
2021-06-05 12:14:06我需要在我的Android项目中集成一个持续集成系统,我已经看到CodeShip是一个很好的选择,所以我创建并配置了一个项目来使用以下脚本编译我的Android应用程序:# Install java 8jdk_switcher home oraclejdk8jdk_... -
AppManager:功能齐全的Android软件包管理器和查看器
2021-02-03 03:46:03另一个Android包管理器和查看器,但是... Copyleft的自由软件(GPLv3 +) 材质设计(和一个不错的用户界面) 没有不必要的权限 不连接到Internet(ADB模式需要权限) 在主窗口中显示尽可能多的信息 列出任何... -
Android 11 适配 软件包可见性
2021-12-24 18:01:03一、软件包可见性说明 如果应用以 Android 11(API 级别 30)或更高版本为目标平台,在默认情况下,系统会自动让部分应用对您的应用可见,但会隐藏其他应用。 通过让部分应用在默认情况下不可见,系统可以了解应向... -
Android Wear - WearablePkgInstaller:软件包安装失败returnCode -104
2021-06-03 11:50:48我在玩弄自定义表盘工作,但当我用手机apk包装应用并在手机上安装签名手机APK时,我得到在我的logcat以下错误消息,当磨损APK试图安装到手表Android Wear - WearablePkgInstaller:软件包安装失败returnCode -... -
获取Android手机已安装应用程序的安装包
2022-02-24 10:42:30手把手教你获取Android手机已安装应用程序的安装包 前言: 某天临时访问了一个网址然后下载了一个APP,过了一段时间想要将这个APP安装在其他手机上面或者是介绍给其他小伙伴安装的时候发现该应用在应用商店里面... -
AS运行安装失败,真机提示“软件包似乎无效”问题
2022-05-05 10:42:58软件包似乎无效 -
Android解析软件包时出现问题
2021-06-07 15:09:15解决方法: 1、安装包损坏,上传、下载过程,都存在损坏的可能。丢失一个字节,就无法安装。 2、包名命名,我今天遇到这个问题,就是包名导致,具体参考详细的命名规范。 -
python开发安卓应用程序未安装_安装Python遇到问题——有 6 个软件包没有被完全安装或卸载。...
2021-01-29 21:14:16Desktop sudo apt-get install python-...升级了0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 19个软件包未被升级。有6个软件包没有被完全安装或卸载。解压缩后会消耗0B 的额外空间。您希望继续执... -
Android apk安装时出现“解析软件包错误”
2021-05-28 09:02:15Android线程管理(二)&mdash;&mdash;ActivityThread线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作... -
通过提供软件包名称(的一部分)来批量卸载Android应用-Android开发
2021-05-26 12:16:22AndroidUninstall使用此非常方便的脚本批量卸载Android应用程序。 只需提供一个软件包名称(或其中的一部分),脚本便会负责卸载。 在以下情况下非常有用:您选择一个共享设备并要从所有域应用程序(例如jmols)中... -
微信支付源码appjava-android-library:精选的Android软件包和资源列表
2021-06-07 03:13:12Android 库列表 精选的 Android 库精选列表。 随意贡献。 指数 联网 不。 名称 描述 01 Square, Inc. 的 Android 和 Java 类型安全 HTTP 客户端。 02 Fast Android Networking Library 是一个强大的库,用于在 ... -
在Android7.0以上安装时出现“解析软件包错误”
2018-11-17 17:28:51vivox23在Android studio上调试软件出现“解析软件包错误”,不管是项目工程还是自己新建的hellowrold工程都会出现这个问题,取消下图第一个选项 Android studio的2.0新版本出了一个革命性的功能就是Instant Run... -
Android Studio执行出现“应用程序安装异常(-15)
2021-07-29 15:24:30Android Studio在vivo手机执行程序时出现“应用程序安装异常(-15)”出误。 如图: 设备信息: Android Studio版本3.0.1,出现的错误信息为: 翻译: 解决办法: 打开 gradle.propeities文件... -
android – Beta by Crashlytics – 软件包似乎已损坏
2021-06-12 15:47:16我最近为客户开发了一个应用程序,现在必须在Crashlytics上分享它...但在安装结束时,它说“软件包似乎已损坏”.这是我第一次看到这个,我不知道该怎么做.我尝试使用所有这类APK:– debug(unsigned)– 释放(未签名)– ... -
Ubuntu使用JDK命令出现 程序 XXXX已包含在下列软件包中 问题的解决方法
2021-03-13 01:31:08[1.参考文章...在Ubuntu安装JDK的时候,如果系统当中已经有默认的JDK,在使用java -version命令的时候会出现先面的问题:程序 'java... -
Android6.0以上安装安装包
2021-05-28 08:35:23Android6.0以下public static void installNewPackage(Context context, String path) {if (StringUtils.isNull(path)) {return;}Intent intent = new Intent(Intent.ACTION_VIEW);intent.addFlags(Intent.FLAG_... -
Android11适配 - 软件包可见性
2022-03-21 11:26:29但是在Android11中,除了默认的一些应用外,我们不能直接获取到软件包是否已经安装了,换句话说我们安装了一个应用,但是我们调用 getInstalledApplications() 或 getInstalledPackages()的可能没有返回此包名。... -
Android APP程序更新报解析软件包时出现错误问题解决方法
2018-12-13 09:34:07最近在做一个项目,在实现程序自动更新功能时,程序下载成功了,但是报“解析软件包时错误“,此问题困扰了我好久,从网上找的解决方法也都不管用,后台自己排查了下代码,发现文件目录不对引起的,在这里贴一下,做... -
rn-in-app-review:React Native软件包为Android和ios应用程序添加了应用程序审阅功能
2021-04-14 06:10:06现在,您可以集成此功能以响应本机,并且可以向用户显示应用程序内查看对话框。 用户无需移动到商店或应用商店即可提交评论。 同时支持android和iOS 入门 $ npm install rn-in-app-review --save 或者$ yarn add rn...