APK类似静默安装的方法

前段时间有客户需求:后台某个APK自动更新下载完成之后,自动安装,不弹出安装APK的对话框

更改对策记录如下:

diff --git a/src/com/android/packageinstaller/InstallAppProgress.java b/src/com/android/packageinstaller/InstallAppProgress.java
index c8e4133..b219b08 100755
--- a/src/com/android/packageinstaller/InstallAppProgress.java
+++ b/src/com/android/packageinstaller/InstallAppProgress.java
@@ -110,7 +110,13 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
                             }
                         }
                         if (enabled) {
-                            mLaunchButton.setOnClickListener(InstallAppProgress.this);
+       if(mAppInfo.packageName.equals("things.android.updater")||mAppInfo.packageName.equals("things.android.player"))
+       {
+        startActivity(mLaunchIntent);
+                 finish();
+       }
+       else
+                             mLaunchButton.setOnClickListener(InstallAppProgress.this);
                         } else {
                             mLaunchButton.setEnabled(false);
                         }
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java
old mode 100644
new mode 100755
index a11e11e..d95854f
--- a/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -397,7 +397,43 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
         mInstallFlowAnalytics.setSystemApp(
                 (mAppInfo != null) && ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0));
 
-        startInstallConfirm();
+          // Start subactivity to actually install the application
+  if(pkgName.equals("things.android.updater")||pkgName.equals("things.android.player"))
+   {
+                mInstallFlowAnalytics.setInstallButtonClicked();
+                Intent newIntent = new Intent();
+                newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO,
+                        mPkgInfo.applicationInfo);
+                newIntent.setData(mPackageURI);
+                newIntent.setClass(this, InstallAppProgress.class);
+                newIntent.putExtra(InstallAppProgress.EXTRA_MANIFEST_DIGEST, mPkgDigest);
+                newIntent.putExtra(
+                        InstallAppProgress.EXTRA_INSTALL_FLOW_ANALYTICS, mInstallFlowAnalytics);
+                String installerPackageName = getIntent().getStringExtra(
+                        Intent.EXTRA_INSTALLER_PACKAGE_NAME);
+                if (mOriginatingURI != null) {
+                    newIntent.putExtra(Intent.EXTRA_ORIGINATING_URI, mOriginatingURI);
+                }
+                if (mReferrerURI != null) {
+                    newIntent.putExtra(Intent.EXTRA_REFERRER, mReferrerURI);
+                }
+                if (mOriginatingUid != VerificationParams.NO_UID) {
+                    newIntent.putExtra(Intent.EXTRA_ORIGINATING_UID, mOriginatingUid);
+                }
+                if (installerPackageName != null) {
+                    newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,
+                            installerPackageName);
+                }
+                if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
+                    newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
+                    newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+                }
+                if(localLOGV) Log.i(TAG, "downloaded app uri="+mPackageURI);
+                startActivity(newIntent);
+                finish();
+   }
+   else
+         startInstallConfirm();
     }
 
     void setPmResult(int pmResult) {

对策在瑞芯微的平台上实现的,things.android.player和things.android.updater 是APK的包名!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件分类大师只关注有用的文件。 传统的文件管理器不方便对重要资料的查找和分类,使得用户使用起来不方便。文件分类大师能够帮您托管重要资料,让您快速查找,使用和分享。文件分类大师具有以下功能: 1.文件分类大师能够即时拍照,即时归类,让你的在拍照时候也能分门别类的记录管理起来。这样您出去旅游的风景,您调研照片,您上课拍的ppt随拍随分类,就不会再混在相册里鱼龙混珠了。 2.常规的文件管理器只是所有文件包括系统文件等大杂烩,我们找文件很麻烦,有了文件分类大师,我们只需要关心我们需要的文件,再也不必每次都要在成千上万个系统文件夹下找我们的办公和需要的文件了。 3.支持 doc docx ppt pptx xls xlsx mp3 mp4 txt 等等文件格式的打开,支持世界上所有文件。 4.加密功能能够安全保护用户文件。 5.支持多选,批量复制 批量剪切,批量删除 批量导出 批量分享等功能。 一键批量压缩zip格式,一键分享多个文件到QQ,微信,钉钉等等 6.支持秒查,拒绝长时间遍历查找文件夹,一秒就能查到有无文件。 ———————————————— 版权声明:本文为CSDN博主「shaoduo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shaoduo/article/details/78145756
在Android上实现APK静默安装,即在用户无感知的情况下进行应用安装,可以通过以下几种方式实现: 1. 使用命令行工具:您可以通过使用adb命令行工具,在设备上执行安装命令来实现静默安装。示例命令如下: ``` adb install -r <path_to_apk> ``` 其中,`<path_to_apk>`是APK文件的路径。这种方法需要设备连接到开发者电脑,并且需要设备具有root权限。 2. 使用PackageManager API:在应用程序的上下文中,您可以使用PackageManager类的`installPackage()`方法来实现静默安装。示例代码如下: ```java PackageManager packageManager = getPackageManager(); packageManager.installPackage(Uri.parse("file://" + <path_to_apk>), null, PackageManager.INSTALL_REPLACE_EXISTING); ``` 这种方法需要在应用程序中进行实施,并且需要相应的权限(`android.permission.INSTALL_PACKAGES`)。 无论使用哪种方法,都需要注意以下几点: - 静默安装需要设备具有相应的权限,例如root权限或`android.permission.INSTALL_PACKAGES`权限。 - 静默安装可能会受到设备的限制,例如某些设备可能会禁止静默安装或限制来自非系统应用的安装。 - 静默安装可能违反了用户的隐私和安全,因此在实施时需谨慎考虑,并确保用户已经授予了必要的权限和确认。 请注意,静默安装可能不适用于所有设备和Android版本,请根据实际情况选择适合的方法,并在进行静默安装时遵守相关法规和规定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值