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>

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

(0)

相关推荐

  • JAVA/JSP学习系列之四(Orion App Server的安装)

    一.前言 Orion这个东西,小巧,但是功能却非常多,废话不讲,看它目前的支持就知道了:       (1)Servlets/JSP (2)EJB (3)HTTP (注:说明不再需要Apache或者IIS等Web Server) 二.下载,安装 下载地址为Orion Application Server官方站点:http://www.orionserver.com/,我下载的是Orion1.4版本. 下载完,解压到一个目录,我这里用E:\Orion作为例子. 三.配置 (1)根据Orion官方站

  • java实现收藏名言语句台词的app

    让动漫中那些喜欢的人.喜欢的台词,让你难忘的话语,都保留在你的手机中吧 /** * 创建DialogueFragment视图 * */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method

  • android apk反编译到java源码的实现方法

    Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码. 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能. 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧. 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具

  • 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.B

  • Android无需root实现apk的静默安装

    Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startAct

  • Android实现静默安装实例代码

    静默安装主要分为以下几种方式: 一.在ROOT过的机器上,在App中使用pm install指令安装APK: // 申请su权限 Process process = Runtime.getRuntime().exec("su"); dataOutputStream = new DataOutputStream(process.getOutputStream()); // 执行pm install命令 String command = "pm install -r "

  • android实现静默安装与卸载的方法

    本文实例讲述了android实现静默安装与卸载的方法.分享给大家供大家参考.具体如下: 方法1:[使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件] import java.io.File; import android.app.Activity; import android.os.Bundle; import android.content.Intent; import android.con

  • Android 静默安装和智能安装的实现方法

    1 简介 最近研究了Android的静默安装和智能安装,于是写博客记录一下.静默安装就是无声无息的在后台安装apk,没有任何界面提示.智能安装就是有安装界面,但全部是自动的,不需要用户去点击. 首先强调两点:静默安装必须要root权限 智能安装必须要用户手动开启无障碍服务 2 原理 静默安装.卸载的原理就是利用pm install命令来安装apk,pm uninstall 来卸载apk. 智能安装是利用android系统提供的无障碍服务AccessibilityService,来模拟用户点击,从

  • Android P实现静默安装的方法示例(官方Demo)

    Android9.0无法通过以下两种方式实现静默安装: 1.runtime执行shell cmd 2.PackageInstall 反射机制 但是Google已经给我们推荐了相关的APIDemos,所以建议大家多看看源码~ 在frameworks/base/core/java/android/content/pm/PackageInstaller.java有段关于该类的介绍: The ApiDemos project contains examples of using this API: <c

  • Linux静默安装Oracle11g部分问题的解决方法

    这次试了试使用静默安装Oracle,过程比较麻烦,好在有文档帮助,但是由于自己的粗心导致了各种奇葩问题,记录下来. 进行静默安装数据库 $ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp 出现问题: [oracle@bogon ~]$ $ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp Exception in threa

  • Android实现静默安装的两种方法

    前言 一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装. 但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方式称为静默安装.下面这篇文章就给大家介绍了两种方法来实现,下面来一起看看吧. 1.root权限静默安装实现 实现实际使用的是su pm install -r filePath命令. 核心代码如下: protected static void excuteSuCMD() { Process pr

  • Android实现检查并下载APK更新、安装APK及获取网络信息的方法

    本文所述实例为一个天气预报中的android代码,主要包括了下载和安装APK.检查Apk更新.显示'已经是最新'或者'无法获取版本信息'对话框.获取当前客户端版本信息.显示版本更新通知对话框.显示下载对话框.判断是否挂载了SD卡.显示文件大小格式:2个小数点显示等.具体实现代码如下: import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.I

  • Android静默安装实现方案 仿360手机助手秒装和智能安装功能

    之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢?所谓的静默安装,就是不用弹出系统的安装界面,在不影响用户任何操作的情况下不知不觉地将程序装好.虽说这种方式看上去不打搅用户,但是却存在着一个问题,因为Android系统会在安装界面当中把程序所声明的权限展示给用户看,用户来评估一下这些权限然后决定是否要安装该程序,但如果使用了静默安装的方式,也就没有地方让用户看权限了,相当于用户被动接受了这些权限.在Android官方看来,这显示是一种非常危险的行为,因此静默安装这一行为系统是

随机推荐