Advertisement

Android程序实现静默安装并自动重启APP的方法。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
一:需求概述 之前,管理层提出了一个重要的需求:开发一款能够在广告机上运行的应用程序,该应用程序必须具备自动升级的能力。 广告机采用的是非触摸屏设计,因此用户无法通过手动点击方式进行操作,因此,该应用程序必须能够自主完成下载、自动安装以及升级更新。 此外,在安装完成后,应用程序还应能够持续运行,并且尽可能地避免依赖其他辅助应用程序来达成这些功能需求。 二:技术实现方案 针对满足上述需求,最初考虑到的解决方案是采用静默安装的方式。鉴于广告机已经进行了root处理,静默安装过程相对顺利。以下是实现应用程序安装的主要代码片段:/* @param apkPath 待安装应用程序的完整路径,例如: /sdcard/app/app.apk*/ private static boolean clientInstall(String apkPath

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Android应用
    优质
    本文章介绍了在Android系统中实现应用静默安装与自动重启的具体方法和技术要点。适合开发者参考学习。 Android程序静默安装后重新启动APP的方法主要介绍了如何在Android系统中实现软件包的自动、无用户干预的安装过程,并且确保应用能在安装完成后继续运行。 需求简介: 广告机上的应用程序需要具备自动升级功能,由于这些设备没有触摸屏,因此不能通过手动点击来完成更新。这意味着必须找到一种方法让APP能够自行下载和安装新的版本,同时在更新后保持正常运行状态。 实现思路: 为满足上述需求,静默安装成为首选方案之一。鉴于广告机已经root过,执行静默安装相对简单。然而,在应用被自动升级之后,原有的进程会被终止。因此需要一种机制来重启应用程序。 解决方法是通过Linux系统的`am start`命令启动特定的Activity,并且添加一个短暂的延迟(例如使用`sleep 120; am start -n 包名/第一个Activity名称;`)以确保安装过程完全结束再执行应用启动。这需要在代码中调用系统命令,如: ```java private void execLinuxCommand(){ String cmd= sleep 120; am start -n 包名/.MainActivity; } ``` 此方法可以实现自动重启应用程序的需求。 涉及到的权限包括`INSTALL_PACKAGES`:这是Android API里的一个特殊权限,允许应用安装新的软件包。在Manifest文件中声明这个权限是必要的。 ```xml ``` 总结: 通过利用静默安装功能结合Linux命令的使用,可以实现应用程序自动升级的同时确保其能够正常运行而不需人工干预。 知识点包括但不限于: - Android静默安装:无需用户许可直接执行软件包的安装。 - 自动升级机制的设计与实施。 - 利用Root权限简化操作流程。 - 使用`am start`命令启动Android应用中的Activity。 - 在Linux环境下执行系统级指令的操作方式。 - 如何在Manifest文件中声明必要的API访问权限。
  • Android应用APP技巧
    优质
    本文章介绍了如何在Android设备上实现应用程序的静默安装以及自动重启特定应用的方法与步骤。 需求简介 之前老板提出一个要求,在广告机上运行的应用程序需要具备自动升级的功能。由于这些设备是非触摸屏的,所以用户无法通过手动点击进行更新操作。因此,应用必须能够实现自动下载、安装并完成升级过程,并且在安装完成后继续正常运行,同时尽量不依赖其他应用程序来达成上述目标。 实现思路 为满足这一需求,首先考虑的是静默安装的方法。由于广告机已具备root权限,执行这种类型的安装相对容易。以下是进行应用安装的主要代码: ``` /* @param apkPath 等待安装的应用程序全路径,例如:/sdcard/app/app.apk */ private static boolean clientInstall(String apkPath, ```
  • Android两种
    优质
    本文介绍了在Android系统中实现应用静默安装的两种方法,帮助开发者或用户无需手动操作即可自动完成软件安装。 在Android系统中,常规的APK安装过程会弹出一个用户界面,要求用户确认安装操作。然而,在某些特定场景下,如系统更新或自动化测试,开发者可能需要在后台执行APK的静默安装,即不显示任何用户界面。本段落将探讨两种实现Android静默安装的方法。 1. **root权限静默安装** 这种方法适用于设备已经获取root权限的情况。通过执行shell命令`su pm install -r filePath`,可以在后台静默安装APK。具体实现的Java代码如下: ```java protected static void executeSuCMD() { Process process = null; OutputStream out = null; InputStream in = null; String currentTempFilePath = sdcard/app.apk; try { // 请求root权限 process = Runtime.getRuntime().exec(su); out = process.getOutputStream(); // 调用安装命令 out.write((pm install -r + currentTempFilePath + \n).getBytes()); in = process.getInputStream(); int len; byte[] bs = new byte[256]; while (-1 != (len = in.read(bs))) { String state = new String(bs, 0, len); if (Success\n.equals(state)) { // 安装成功后的操作 } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (out != null) { out.flush(); out.close(); } if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } } ``` 这段代码首先执行`su`命令获取root权限,然后通过`out.write()`写入安装命令`pm install -r filePath`,其中`filePath`为APK的路径。当从输入流中读取到Success\n时,表示安装成功。 2. **非root权限静默安装(提示用户安装)** 对于没有root权限的设备,可以通过Intent启动安装流程,但仍然需要用户确认。代码如下: ```java public static void openFile() { // 检查文件是否存在 if (!isHasfile()) { downLoadFile(http://example.com/app.apk); } Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(/sdcard/updateupdata.apk)), application/vnd.android.package-archive); mContext.startActivity(intent); } ``` 这里首先检查文件是否存在,如果存在则创建一个Intent,设置`FLAG_ACTIVITY_NEW_TASK`以在新的任务栈中启动Activity,并设置`ACTION_VIEW`以查看APK文件。`setDataAndType()`用于指定文件类型,这里是application/vnd.android.package-archive,表示APK文件。通过`startActivity()`启动Intent,系统会弹出安装界面,用户点击确认后才能进行安装。 **总结** 在Android中实现静默安装,root权限提供了后台无提示安装的可能,但这种方式可能会受到安全性和权限的限制。对于非root设备,虽然可以通过Intent启动安装流程,但无法完全避免用户交互。在实际应用中,开发者应根据设备状况和用户需求选择合适的方法。同时,由于静默安装涉及到系统的安全层面,使用时需谨慎,遵守应用商店和平台的相关规定,以免引起不必要的安全风险。
  • AndroidAPK两种
    优质
    本文介绍了在Android系统中实现APK文件静默安装的两种方法,无需用户手动操作即可完成应用的自动部署。 这篇文档介绍了Android APK的安装方式,希望对你有所帮助。
  • Android 不用 root APK
    优质
    本教程详细介绍了如何在不获取root权限的情况下,在安卓设备上实现APK文件的静默安装方法。无需用户交互即可自动完成应用部署。 使用Android5.0的环境编译时,不同版本之间aidl文件可能会有差异,具体情况需参照Android系统源码。详细内容可参考博客文章《Android 无需root实现APK静默安装》。
  • Android源代码(参考)
    优质
    本项目包含Android应用程序包的静默安装功能的源代码实现,适用于开发者研究和学习Android应用安装机制。 近日想实现静默安装(不提示用户),网上搜到的文章大多提到一个方法 PackageManager.install。这是一个非公开的方法,其用法借鉴了内置应用 packageInstaller,跳过Activity提示用户,直接调用核心方法。由于下载整个Android源码较为麻烦且文件较大,这里将相关部分的代码打包提供给大家。
  • Android免ROOT
    优质
    介绍一款无需获取ROOT权限即可实现应用静默安装的工具或方法,适用于追求便捷和隐私保护的安卓用户。 需要framework.jar包,并调用方法Installer.getInstance().silentInstall(this,apk路径);。
  • Android系统中开机
    优质
    本文介绍了在Android系统中如何使应用程序具备开机自动启动的功能,详细讲解了其实现方法和技巧。适合开发者参考学习。 在Eclipse下运行通过Android开机启动的app。
  • 在C#中退出时
    优质
    本篇文章介绍了如何使用C#编程语言编写代码,在应用程序关闭时自动化地重启该程序。适合中级开发者参考学习。 // 触发退出程序事件 private void button1_Click(object sender, EventArgs e) { Application.ExitThread(); Thread thtmp = new Thread(new ParameterizedThreadStart(run)); object appName = Application.ExecutablePath; Thread.Sleep(1); thtmp.Start(appName); } private void // 原代码中的 private voi 可能是笔误,正确的应该是 private void 方法签名需要完整或者上下文给出更多细节。
  • 在C#中退出后
    优质
    本文介绍了如何使用C#编程语言编写代码,使应用程序能够在关闭后自动重新启动。适合对Windows Forms或控制台应用感兴趣的开发者阅读。 下面为大家介绍在C#中实现退出程序后自动重新启动的方法。这种方法我觉得非常实用,现在分享给大家参考一下,希望对大家有所帮助。