当前位置: 首页 > 编程笔记 >

java实现静默安装apk

尹乐邦
2023-03-14
本文向大家介绍java实现静默安装apk,包括了java实现静默安装apk的使用技巧和注意事项,需要的朋友参考一下

静默安装就是偷偷的把一个应用安装到手机上,就是屏蔽确认框,通过反射

只能写个主要的代码,这个是在linux编译用到,因为静默安装需要调用系统服务,在源码下编译,我也是搞了好久

InstallActivity.java

package com.smart.Installback;
 
import java.io.File;
 
 
//import com.android.packageinstaller.R;
 
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.IPackageInstallObserver;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
 
public class InstallActivity extends Activity {
  /** Called when the activity is first created. */
  private Button btn=null;
  private Button btn2=null;
  private final int INSTALL_COMPLETE = 1;
  final static int SUCCEEDED = 1;
  final static int FAILED = 0;  
  public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
     
    setContentView(R.layout.main);
    String fileName = Environment.getExternalStorageDirectory() + "/UC.apk"; 
      Uri uri = Uri.fromFile(new File(fileName));
 
      int installFlags = 0;
      PackageManager pm = getPackageManager();
      try {
        PackageInfo pi = pm.getPackageInfo("com.uc.browser", 
            PackageManager.GET_UNINSTALLED_PACKAGES);
        if(pi != null) {
          installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
        }
      } catch (NameNotFoundException e) {
      }
 
 
//      String installerPackageName = getIntent().getStringExtra(
//          Intent.EXTRA_INSTALLER_PACKAGE_NAME);
      PackageInstallObserver observer = new PackageInstallObserver();
      pm.installPackage(uri, observer, installFlags, "com.uc.browser");
  }
   
  private OnClickListener listener2=new OnClickListener(){
    public void onClick(View v) {
      String fileName = Environment.getExternalStorageDirectory() + "/UC.apk"; ivate 
      Uri uri = Uri.fromFile(new File(fileName));
 
      int installFlags = 0;
      PackageManager pm = getPackageManager();
      try {
        PackageInfo pi = pm.getPackageInfo("com.uc.browser", 
            PackageManager.GET_UNINSTALLED_PACKAGES);
        if(pi != null) {
          installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
        }
      } catch (NameNotFoundException e) {
      }
         
       
//      String installerPackageName = getIntent().getStringExtra(
//          Intent.EXTRA_INSTALLER_PACKAGE_NAME);
       
      PackageInstallObserver observer = new PackageInstallObserver();
      pm.installPackage(uri, observer, installFlags, "com.uc.browser");
 
 
    }
  };
   
  class PackageInstallObserver extends IPackageInstallObserver.Stub {
    public void packageInstalled(String packageName, int returnCode) {
      Message msg = mHandler.obtainMessage(INSTALL_COMPLETE);
      msg.arg1 = returnCode;
      mHandler.sendMessage(msg);
    }
  };
   
  private Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
      switch (msg.what) {
        case INSTALL_COMPLETE:
          // Update the status text
          // Show the ok button
          int centerTextLabel;
          Drawable centerTextDrawable = null;
          if(msg.arg1 == SUCCEEDED) {
             
          } else {}
          if (centerTextDrawable != null) {}
 
          break;
        default:
          break;
      }
    }
  };
  
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
 
</LinearLayout>

以上所述就是本文的全部内容了,希望大家能够喜欢。

 类似资料:
  • 本文向大家介绍Android实现静默安装实例代码,包括了Android实现静默安装实例代码的使用技巧和注意事项,需要的朋友参考一下 静默安装主要分为以下几种方式: 一、在ROOT过的机器上,在App中使用pm install指令安装APK: 二、修改系统应用PackageManagerIntaller.apk的源码,增加无界面的安装接口: 原理 在Android的文件夹中点击一个APK时,触发安装

  • 本文向大家介绍Android实现静默安装的两种方法,包括了Android实现静默安装的两种方法的使用技巧和注意事项,需要的朋友参考一下 前言 一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装。 但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方式称为静默安装。下面这篇文章就给大家介绍了两种方法来实现,

  • 本文向大家介绍android实现静默安装与卸载的方法,包括了android实现静默安装与卸载的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了android实现静默安装与卸载的方法。分享给大家供大家参考。具体如下: 方法1:【使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件】 安装、卸载

  • 静默安装在安装过程中不需要用户参与而且不显示用户界面。用户不会看到任何对话且不会被询问任何问题。这对于网络管理员希望不需要用户参与的安装或卸载一些程序,这样可以快速的对多台电脑执行操作。对于其他的开发者来说,把其他的安装程序整合到自己的安装程序并且把所有需要的信息收集到自己的安装程序而不是显示两个安装程序时非常有用的。 NSIS 安装程序和卸载程序都可以静默或非静默。当一个安装程序或卸载程序静默时

  • 这里即发现 /silent 参数即设置为静默。GetOptionsS 宏末尾的 S 表示区分大小写。如果不想区分大小写,或者你的 NSIS 版本较低,FileFunc.nsh 头文件未包含此宏,那么你可以使用 GetOptions,不区分大小写。 ; 包含头文件 !include "FileFunc.nsh" ; 将这些脚本加入到 .onInit 函数中 ; 当然你如果没有这个函数需要添加 Fun

  • 本文向大家介绍教你如何静默安装ORACLE,包括了教你如何静默安装ORACLE的使用技巧和注意事项,需要的朋友参考一下 由于本次的实验我是将上次的虚拟机直接拷贝过来,然后将里面图形化界面安装好了的oracle给删除,再次重新安装,所以这里要修改一些配置。 首先修改的是我们的IP地址 完成后我们修改一下hosts文件,将里面的ip地址给修改一下 接着我们删除上次安装过的ORACLE文件 进入root