精华内容
下载资源
问答
  • 主要介绍了android实现下载android程序安装包自动升级的示例,大家参考使用吧
  • 主要介绍了Android根据名停止其他应用程序,需要的朋友可以参考下
  • Android开发,获取当前手机安装的所有应用、根据名获取应用信息、获取当前应用程序名、获取程序 图标、获取程序的版本号、获取程序的名字、获取程序的权限、获取程序的签名、获取当前名的 SHA1、将获取到得...
  • Android根据名停止其他应用程序 1.使用killBackgroundProcesses()方法 首先再AndroidManifest.xml文件中添加权限 然后直接调用stopApp(mContext,packageName)方法 public void stopAppByKill(Context context ,...
  • 88个经典Android应用程序打包下载 学习Android必备代码
  • 如何把已经安装安卓应用程序提取对应的APK安卓程序包 接下来看我操作 我们随便提取一个软件的安装包 看我操作 我提取的是系统的APP 这个软件不止可以提取外部APP 连系统本身的APP也可以提取 是不是很强大 我们...
  • 获取android设备已安装应用信息(包括:应用名称、图标、名等)
  • 查询手机上安装应用程序,并通过名打开相应的应用程序
  • 88个经典Android应用程序打包下载-源代码.zip ,值得你认真学习
  • SAI v4.4 for Android 拆分APK安装程序,可安装 .apks 等格式的应用包
  • import android.os.Bundle; import android.widget.TextView; import android.app.Activity; import android.content.pm.... /** * Demo描述: * 获取应用程序名称(ApplicationName) */ public class MainActivity ex
  • android如何获取正在运行的应用程序,因为在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序
  • 应用程序包安装android的特点.docx
  • Android应用程序安装位置

    千次阅读 2017-01-11 10:28:38
    百度了一番,看到博客上很多都说在 文件中添加android:installLocation=”auto”属性。然后我就兴冲冲的加上去了。问题也解决了。 原来看官网的不多,后来看了官网的api讲解,发现原来很多博客是误解。我翻译了一下...

    之所以写这篇文章,是因为原来开发的一项目,被一位老奶奶说安装包太大,她的内存空间不够。明明只有10几兆,她就是不愿意装进内部存储里面。没办法,只好解决一下。百度了一番,看到博客上很多都说在 文件中添加android:installLocation=”auto”属性。然后我就兴冲冲的加上去了。问题也解决了。
    原来看官网的不多,后来看了官网的api讲解,发现原来很多博客是误解。我翻译了一下官网的英文,只希望不给更多人带来误解。

    一、英文官网地址

    App Install Location
    英文比较好的可自行上官网查看,英文差一点的,可以借助翻译工具查看。如果不想看英文的,想更快的可以看我的翻译。当然我也是借助工具翻译的。

    二、翻译

    应用程序安装位置

    从API Level 8开始,您可以允许将应用程序安装在外部存储设备(例如设备的SD卡)上。 这是一个可选功能,您可以使用android:installLocation清单属性为您的应用程序声明。 如果不声明此属性,则应用程序将仅安装在内部存储上,并且无法移动到外部存储。

    要允许系统在外部存储上安装您的应用程序,请修改您的清单文件,以在元素中包含android:installLocation属性,值为“preferExternal”或“auto”。 例如:
    这里写图片描述
    如果声明“preferExternal”,请求您的应用程序安装在外部存储上,但系统不保证您的应用程序将安装在外部存储上。 如果外部存储器已满,系统会将其安装在内部存储器上。 用户还可以在两个位置之间移动应用程序。

    如果声明为“auto”,则表示您的应用程序可能安装在外部存储设备上,但您没有安装位置的首选项。 系统将根据几个因素决定在哪里安装您的应用程序。 用户还可以在两个位置之间移动应用程序。

    当您的应用程序安装在外部存储设备上时:

    只要外部存储器安装在设备上,对应用程序性能没有影响。
    .apk文件保存在外部存储上,但所有私有用户数据,数据库,优化的.dex文件和提取的本地代码都保存在内部设备内存中。
    存储应用程序的唯一容器使用随机生成的密钥加密,只能由最初安装它的设备解密。 因此,安装在SD卡上的应用程序仅适用于一个设备。
    用户可以通过系统设置将应用程序移动到内部存储。

    警告:当用户启用USB大容量存储与计算机共享文件或通过系统设置卸载SD卡时,外部存储将从设备中卸载,并且外部存储上运行的所有应用程序将立即被终止。

    向后兼容性

    您的应用程序在外部存储上安装的功能是仅在运行API Level 8(Android 2.2)或更高版本的设备上可用的功能。在API级别8之前构建的现有应用程序将始终安装在内部存储上,并且无法移动到外部存储(即使在具有API级别8的设备上)。但是,如果您的应用程序旨在支持低于8的API级别,则可以选择为API级别8或更高版本的设备支持此功能,并仍然与使用低于8的API级别的设备兼容。

    允许在外部存储上安装,并保持与低于API级别8的版本兼容:

    1.在元素中包含值为“auto”或“preferEternal”的android:installLocation属性。
    2.将android:minSdkVersion属性保留为原样(小于“8”),并确保您的应用程序代码仅使用与该级别兼容的API。
    3.为了编译您的应用程序,将您的构建目标更改为API级别8.这是必要的,因为较旧的Android库不理解android:installLocation属性,并且不会在应用程序存在时编译它。

    当应用程序安装在API级别低于8的设备上时,将忽略android:installLocation属性,并将应用程序安装在内部存储上。

    警告:虽然旧的平台会忽略此类XML标记,但是您的minSdkVersion小于“8”时,必须注意不要使用API Level 8中引入的编程API,除非您执行必要的工作来提供向后兼容性 你的代码。

    不应在外部存储上安装的应用程序

    当用户启用USB大容量存储器与其计算机共享文件(或以其他方式卸载或删除外部存储器)时,安装在外部存储器上并且当前运行的任何应用程序将被终止。 系统有效地不知道应用程序,直到大容量存储器被禁用,并且外部存储器被重新安装在设备上。 除了杀死应用程序并使其不可用于用户之外,这可以以更严重的方式破坏一些类型的应用程序。 为了使您的应用程序始终如预期般运行,如果使用以下任何功能,则不应允许您的应用程序安装在外部存储上,原因是卸载外部存储设备时引发的后果:

    服务
    您的正在运行的服务将被终止,并且在重新安装外部存储时不会重新启动。 但是,您可以注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE广播Intent,这将在安装在外部存储上的应用程序再次可用于系统时通知您的应用程序。 此时,您可以重新启动服务。

    报警服务
    您在AlarmManager中注册的报警将被取消。 重新安装外部存储器时,必须手动重新注册任何报警。

    输入法引擎
    您的IME将替换为默认的IME。 重新安装外部存储设备时,用户可以打开系统设置以再次启用IME。

    动态壁纸
    您运行的动态壁纸将替换为默认动态壁纸。 重新安装外部存储设备时,用户可以再次选择您的动态壁纸。

    应用程序小部件
    您的应用程序小部件将从主屏幕中删除。 重新安装外部存储时,在系统重置主应用程序(通常直到系统重新启动)之前,您的应用程序窗口小部件将不可供用户选择。

    账户管理
    使用AccountManager创建的帐户将消失,直到重新装载外部存储设备。

    同步适配器
    您的AbstractThreadedSyncAdapter及其所有同步功能将无法工作,直到重新安装外部存储。

    设备管理员
    您的DeviceAdminReceiver及其所有管理功能将被禁用,这可能会对设备功能造成不可预见的后果,在重新安装外部存储设备后,这些功能可能会持续。

    广播接收者接收“启动完成”广播
    系统在外部存储器安装到设备之前传送ACTION_BOOT_COMPLETED广播。 如果您的应用程序安装在外部存储设备上,它将永远不会接收此广播。

    如果您的应用程序使用上面列出的任何功能,您不应该允许您的应用程序安装在外部存储设备上。 默认情况下,系统不会允许您的应用程序安装在外部存储上,因此您不需要担心现有的应用程序。 然而,如果你确定你的应用程序永远不应该安装在外部存储,那么你应该通过声明android:installLocation值为“internalOnly”清楚。 虽然这不会更改默认行为,但它明确声明您的应用程序只应安装在内部存储上,并作为提醒您和其他开发人员的此决定。

    应在外部存储上安装的应用程序
    简单来说,没有使用上一节中列出的功能的任何东西在安装在外部存储上时是安全的。 大型游戏通常是应该允许在外部存储上安装的应用程序类型,因为游戏在非活动时通常不提供附加服务。 当外部存储器变得不可用并且游戏过程被杀死时,当存储器再次变得可用并且用户重新开始游戏时(假设游戏在正常的活动生命周期期间正确地保存其状态),应当没有可见的效果。

    如果您的应用程序需要几个兆字节的APK文件,您应该仔细考虑是否启用该应用程序安装在外部存储上,以便用户可以保留其内部存储空间。

    三、要点解释

    看完翻译后,是不是感觉明朗很多。再次回到我原来开发时那个问题,直接选择了auto,这样是不对的,这也是很多博客中写的比较误解的地方。

    auto是可能安装在外部存储设备上,没有首选项,系统根据几个因素选择安装位置。

    preferExternal有优先级,先安装外存,当外存不足时安装内部存储上。

    还有就是不应安装在外部存储的注意事项,一定要注意。

    谢谢观看,个人觉得官网是最好的学习资料,具有权威性,当大家看到博客存在疑惑时,请去官网寻找正确的答案。

    展开全文
  • android应用/游戏上架国内渠道,国外GooglePlay接入的登录或者支付验证需要验证名,versionCode,签名等应用信息,为了快速检查应用信息以工具化获取应用信息。 tips:在Activity下直接用getPackageManager可获取...
  • 本文实例讲述了Android编程判断应用程序是否已安装的方法。分享给大家供大家参考,具体如下: 这里以twitter程序为例,假设twitter程序包名为“com.twitter.android”。这时候可用以下代码来判断是否被安装。 ...
  • 利用VS2010.net 及Mono for Android 开发Android应用程序, 创建应用程序,并打包生成可安装的apk文件。
  • android简单实例,通过已知应用名打开该应用程序
  • 88个经典Android应用程序打包下载(源代码),有助于参考学习
  • 如果调用系统的安装流程,进行apk的重新安装,即,安装apk是通过系统弹出如下弹窗 安装apk。 如果出现提示 “应用安装” 如图: 莫慌,不一定是安装包损坏。 用adb install命令进行安装,会提示这个错误 可知...

    情景:机器上已经安装了一个版本
    如果调用系统的安装流程,进行apk包的重新安装,即,安装apk是通过系统弹出如下弹窗

    安装apk。

    如果出现提示 “应用未安装”
    如图:
    在这里插入图片描述
    莫慌,不一定是安装包损坏。

    用adb install命令进行安装,会提示这个错误

    可知,安装包的版本打包时比之前客户安装的版本还要低。

    那么,哪里设置这个版本信息呢

    在build.gradle文件中有如下配置

    android {
    	defaultConfig {
    		    versionName XXX
            	versionCode XXX
    	}
    }
    

    其中,起到决定到底是新的版本还是旧版本的是versionCode这个参数。
    versionName虽然叫做版本名称,但是它代表了一个文本名称,你甚至可以把它设置为"alpha",“beta”。
    安装好后,在设置-应用 可以看到版本号,版本号显示的是versionName参数,你甚至可以把它设置为字符

    当新的apk包的versionCode小于已安装包的值时,并且设备没有卸载已经安装的版本时,安装不小心将versionCode减少后的apk包,就会报错,实际是认为这个安装包是旧版本,所以拒绝安装。

    当做app的自动更新功能时,如果使用调用系统安装弹窗安装方式时,一定要保证新打包的versionCode不能比之前的小。

    或者先做卸载旧版本包的操作再调用安装。

    展开全文
  • 主要介绍了Android编程判断手机上是否安装了某个程序的方法,涉及Android针对程序包的操作及进程判断的相关技巧,需要的朋友可以参考下
  • 我们在安装软件的时候经常会遇到应用程序安装这个问题,尤其是在更新软件或者是从ROM提取出来的软件会出现这样的问题。那我们该如何处理这个问题呢?下面我就为大家列举几个解决这种问题的办法。产生应用程序未...

    我们在安装软件的时候经常会遇到应用程序未安装这个问题,尤其是在更新软件或者是从ROM提取出来的软件会出现这样的问题。那我们该如何处理这个问题呢?下面我就为大家列举几个解决这种问题的办法。

    83bd35fdba978b435651128d1255afa9.png

    产生应用程序未安装的原因

    软件签名不一致。这种情况一般出现在更新软件的情况下。譬如你之前安装了某软件比较旧的版本,而你所需要更新的软件和你之前以安装的软件签名不一致,则导致应用程序无法安装。

    软件未签名。这种情况一般出现在你是从ROM包里提取的软件或者是你自己修改过而未进行再签名。

    应用程序所要求的系统版本比你手机的版本不一样。譬如某手机软件要求安卓系统在Android2.3以上,而你的手机安卓系统却是Android2.2。则会出现应用程序未安装。

    方法步骤:

    对于软件签名不一致这种情况,需要先卸载之前的旧版本,然后在安装新版本即可。进入手机设置→应用程序设置→管理应用程序→点击软件→卸载。

    ecc2d08f9d63984edfc8f49b01a8515a.png

    865f5ba9a5888abe3b90b494baea9f96.png

    71ec436223bd434cc2d67a49cac27954.png

    7b77a300f8409167c9a77317cb2535bb.png

    对于软件未签名,这需要一个签名软件,百度zipsigner,安装这个软件,打开后给所需要软件进行签名。1所示是找到需要签名的软件;2是签了名软件保存的地方;3这里要注意把signed。zip改成软件名。apk,譬如你给QQ签名则是手机QQ。apk。主要是便于找出来。4是开始签名。完成之后就去你设置的目录找到软件开始安装吧。

    d359fb8f0735e08bc16d86516aab2348.png

    d2011a7d605b5b3817f39f299e9ca48d.png

    对于系统要求不足,你是Android2.2,软件需求是Android2.3以上。你只能找找这个软件有没有更低版本的了,或者升级系统。

    如果你是获得了root权限的机友,还有个办法安装未签名的软件,就是把这个软件通过root文件管理器放置到system/app里,权限修改为如图所示即可。记得点击右上角的挂在为读写,然后重启手机。

    9afcf0bb7cb105f5d9def6cbdbb5e597.png

    64d8b55cc540624aed1bd160c4517769.png

    还有就是可以在电脑端进行签名,不过需要设置java环境,请百度之。然后搜素apksign,下载直接签名使用。

    b701c64979e39e911a7f48cf57a996b5.png

    806cdc04d40ea93f3f6422a7b57a934f.png

    展开全文
  • android10调用安装程序安装apk

    千次阅读 2021-12-10 19:17:06
    android10 调用安装程序 安装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

    最后别忘记允许权限

    展开全文
  • 做项目的时候要用到这个功能,很快写出来了,其实代码也很简单。还是贴上来供参考,主要是为了自己以后查阅。import java.util.Iterator;import java.util.List;...import android.content.pm.Packag...
  • 应用程序中有时需要调用其它软件,但有时用户没有安装需要调用的软件,为方便用户使用,以下例程实现了半自动化的引导用户安装
  • 主要介绍了Android编程实现应用自动更新、下载安装的方法,涉及Android针对应用程序包的读取,属性判断与更新操作的相关技巧,需要的朋友可以参考下
  • ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装包程序不能接收到这个广播) ACTION_PACKAGE_REPLACED 一个新版本的应用安装到设备,替换之前已经存在的版本 ACTION_PACKAGE_CHANGED ...
  • PlaystoreDownloader一种命令行工具,可直接从Google Play商店下载Android应用程序。 PlaystoreDownloader是直接从Google Play S下载Android应用程序的工具PlaystoreDownloader是直接从Google Play商店直接下载...
  • 包裹信息 显示有关已安装Android 应用程序包的信息 截屏 构建依赖 浮动动作按钮( ) 材料对话框( )
  • 可能你手机安卓系统低于安装包最低支持的安卓系统版本

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 340,582
精华内容 136,232
关键字:

安卓应用包安装程序下载