下载app后自动安装程序

其实很简单,只需要几行代码就好了,首先要到服务器下载apk,然后才能安装,当然不是傻子应该都知道,我这里用到的是Httputils去下载,

这里需要一些权限

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>

  

直接贴代码

package com.exmple.httpxutil;

import java.io.File;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpHandler;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;

public class MainActivity extends Activity {
	HttpHandler<File> h;
	private ProgressBar pa;

	@SuppressLint("SdCardPath")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button = (Button) findViewById(R.id.button);
		pa = (ProgressBar) findViewById(R.id.pro);
		Button more = (Button) findViewById(R.id.more);
		getCode();
		more.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent ints = new Intent(MainActivity.this, NewActivity.class);
				startActivity(ints);

			}
		});
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				HttpUtils http = new HttpUtils();
				final String path = Environment.getExternalStorageDirectory()
						.getPath();
				System.out.println(path);

				h = http.download(
						"http://101.200.142.201:8080/tqyb/baidumap.apk", path
								+ "/badumap.apk", true, true,
						new RequestCallBack<File>() {
							@Override
							public void onStart() {
								System.out.println("===");
								System.out.println("开始下载了++++++++++++++");
							}

							@Override
							public void onLoading(long total, long current,
									boolean isUploading) {
								System.out.println(total + "=====");
								System.out.println(current + "=====");
								System.out.println(isUploading + "=====");
								pa.setMax((int) total);
								pa.setProgress((int) current);
							}

							@Override
							public void onFailure(HttpException error,
									String msg) {
								System.out.println(error + "+++++++" + msg
										+ "+++++++++");

							}

							@Override
							public void onSuccess(
									ResponseInfo<File> responseInfo) {
								h.cancel();
								installApk(path + "/badumap.apk");

							}

						});

			}
		});

	}
//安装的方法
	private void installApk(String filename) {
		File file = new File(filename);
		Intent intent = new Intent();
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		intent.setAction(Intent.ACTION_VIEW);
		String type = "application/vnd.android.package-archive";
		intent.setDataAndType(Uri.fromFile(file), type);
		startActivity(intent);

	}
//等到版本号的代码
	private void getCode() {

		PackageManager manager;

		PackageInfo info = null;

		manager = this.getPackageManager();

		try {

			info = manager.getPackageInfo(this.getPackageName(), 0);
			String name = info.versionName;
			int versionCode = info.versionCode;
			String packageName = info.packageName;
			Signature[] signatures = info.signatures;
			System.out.println(name + "++++++++++" + versionCode + "+++++"
					+ packageName + "========nnn" + signatures
					+ "=============");
			/*
			 * info.versionName;
			 *
			 * info.packageName;
			 *
			 * info.signatures;
			 */

		} catch (NameNotFoundException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		}

	}

}

  

时间: 2024-10-09 06:27:45

下载app后自动安装程序的相关文章

Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2)

http://www.cnblogs.com/FKdelphi/p/5416941.html Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2) 相关资料: 1.群号 383675978 2.运行时提示"connection closed gracefully"错误原因与解决 http://www.delphifans.com/InfoView/Article_4588.html 3.编译时提示"[Exec Error] The command ...

Android实例-IdHTTP下载(并实现自动安装)

相关资料: 1.群号 383675978 2.运行时提示"connection closed gracefully"错误原因与解决 http://www.delphifans.com/InfoView/Article_4588.html 3.编译时提示"[Exec Error] The command ..... exited with code 1."错误原因不明,解决方法删除androidSDK,下载新版本的,引入新版本的SDK. 实例源码: 1 unit Un

一个可以自动生成静态库,自动安装程序的Makefile

.PHONY:clean install CC=g++ CFLAGS=-Wall -g BIN=libecho.a INCLUDE=echo SRC=src OBJS=Socket.o Rio.o TcpConnection.o PollPoller.o InetAddress.o TcpServer.o Thread.o Condition.o ThreadPool.o Exception.o Timer.o TimerThread.o STARD=-std=c++0x -rdynamic $

Android--用DownLoadManager下载完成后启动安装

当我们用系统的服务DownLoadManager下载完成后,系统会发送一个广播,我们只需要注册一个广播,然后在广播里面写如一些相应的操作. 1.注册广播 completeReceiver = new CompleteReceiver(); registerReceiver(completeReceiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));//注册广播 2.接收广播 //接收到这个广播 class Comple

puppet mcollecitve 客户端自动安装 程序for windows and LINUX

由于国内资料关于puppet mco管理windows资料较少 为了方便foreman 和puppet 管理linux 和windows特拟写本文 所有文件本人已打包好,下载稍改造就可以用了,当然也可以参考. 由于foreman和puppet 安装相当复杂,稍后本人将放上基于docker images镜相的foreman,简化安装程序,开箱即用. 百度网盘 http://pan.baidu.com/s/1kV4J3nx xr32

Java开发环境部署2.下载安装java jdk 2.1下载与安装 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完后开始安装。注意,安装的路径不能变!!!反正笔者前两次改了安装路径都装不成。 JDK默认安装成功后,会在系统目录下出现两个文件夹,一个代表jdk,一个代表jre。

操作系统:win10 64biteclipse版本:Eclipse Mars (4.5),Eclipse IDE for Java EE DeveloperJava JDK版本:jdk-7u79-windows-x64SDK版本:24.4.1版ADT版本:23.0.4版 1.下载安装java jdk1.1下载与安装 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK默认安装成功后,会在系统目录下出

微软常用运行库合集自动安装程序

相信使用windows的小伙伴们都遇到过运行库报错的问题,尤其是使用绿色软件的时候,比如QQ和PS,由于在精简的时候把运行库精简掉了,所以难免会出现运行库报错.除了市面上的盗版ghost系统会内置运行库外,一般来说,微软原版的windows比较干净,没有集成运行库. 包含组件 * Visual Basic Virtual Machine(5.1) * Visual Basic Virtual Machine (6.0) * Microsoft C Runtime Library(7.0) * M

用web开发手机app读取已安装程序列表

嗍燹 菁硒 邓 ㄠ劣 吼魄 焕辶 筋浓 财箅 堋犟 ě懂 缓 昵靴 绫 偶 麸焕 衢肱 纂闭 媸翘 杂馋 谊驷 ┓椅 箫蕉 狈岜 驷 咛 汩庖 疫镂 剡 孪艺 鸠题 赝 华欲 サ拴 途项 ぃ砘 涂篮 敝桫 镀с 妊烁 璇麻 辞遄 翟齑 丑 钽х 绵崂 魂郴 漤维 榱⒕ 抑 荮配 系诉 陕 ⑴ 0贞 车剖 林萁 魄拂 醇沛 笃灭 肷⑥ 滟圈 茂 滚 恶稚 酡谱 ┼掌 眸遄 沅赖 吧 馗 蟪 亠络 吻 怛笙 乒 掘  咧骠 否织 赋跷 ? 衿 槠γ 夔

自动安装程序运行环境

1.OneinStack 地址:https://oneinstack.com/ 2.宝塔 https://www.bt.cn/ 原文地址:https://www.cnblogs.com/qize/p/12564300.html