- 浏览: 1222268 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
废话少说,直接上代码,会加上详细注释:
测试地址:http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
另外例子中还可以通过
测试地址:http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
package cn.com; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.webkit.URLUtil; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /*必须引用java.io与java.net*/ import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class InstallUrlApk extends Activity { private TextView mTextView01; private EditText mEditText01; //点击下载的按钮 private Button mButton01; private static final String TAG = "DOWNLOADAPK"; private String currentFilePath = ""; private String currentTempFilePath = ""; private String strURL = ""; private String fileEx = ""; private String fileNa = ""; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView01 = (TextView) findViewById(R.id.myTextView1); mButton01 = (Button) findViewById(R.id.myButton1); mEditText01 = (EditText) findViewById(R.id.myEditText1); mButton01.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /* 文件会下载至local端 */ mTextView01.setText("下载中..."); strURL = mEditText01.getText().toString(); /取得欲安装程序之文件名称(后缀名) fileEx = strURL.substring(strURL.lastIndexOf(".") + 1, strURL.length()) .toLowerCase(); System.out.println("***************fileEx =" + fileEx); fileNa = strURL.substring(strURL.lastIndexOf("/") + 1, strURL .lastIndexOf(".")); System.out.println("***************fileNa =" + fileNa); //开启一个子线程进行文件的下载 getFile(strURL); } }); mEditText01.setOnClickListener(new EditText.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub mEditText01.setText(""); mTextView01.setText("远程安装程序(请输入URL)"); } }); } /* 处理下载URL文件自定义函数 */ private void getFile(final String strPath) { try { if (strPath.equals(currentFilePath)) { getDataSource(strPath); } currentFilePath = strPath; Runnable r = new Runnable() { public void run() { try { // 开启一个线程进行远程文件下载 getDataSource(strPath); } catch (Exception e) { Log.e(TAG, e.getMessage(), e); } } }; new Thread(r).start(); } catch (Exception e) { e.printStackTrace(); } } /* 取得远程文件 */ private void getDataSource(String strPath) throws Exception { //如果是一个正确的网址,就返回true if (!URLUtil.isNetworkUrl(strPath)) { mTextView01.setText("错误的URL"); } else { /* 取得URL */ URL myURL = new URL(strPath); /* 创建连接 */ URLConnection conn = myURL.openConnection(); conn.connect(); /* InputStream 下载文件 */ InputStream is = conn.getInputStream(); if (is == null) { throw new RuntimeException("stream is null"); } // 创建临时文件 // 两个参数分别为前缀和后缀 File myTempFile = File.createTempFile(fileNa, "." + fileEx); /* 取得站存盘案路径 */ currentTempFilePath = myTempFile.getAbsolutePath(); /* 将文件写入暂存盘 */ FileOutputStream fos = new FileOutputStream(myTempFile); byte buf[] = new byte[128]; do { int numread = is.read(buf); if (numread <= 0) { break; } fos.write(buf, 0, numread); } while (true); // 打开文件进行安装(下载完成后执行的操作) openFile(myTempFile); try { is.close(); } catch (Exception ex) { Log.e(TAG, "error: " + ex.getMessage(), ex); } } } // 在手机上打开文件的method private void openFile(File f) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); /* 调用getMIMEType()来取得MimeType */ String type = getMIMEType(f); /* 设置intent的file与MimeType */ intent.setDataAndType(Uri.fromFile(f), type); startActivity(intent); } /* 判断文件MimeType的method */ private String getMIMEType(File f) { String type = ""; String fName = f.getName(); /* 取得扩展名 */ String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length()) .toLowerCase(); /* 依扩展名的类型决定MimeType */ if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") || end.equals("xmf") || end.equals("ogg") || end.equals("wav")) { type = "audio"; } else if (end.equals("3gp") || end.equals("mp4")) { type = "video"; } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { type = "image"; } else if (end.equals("apk")) { /* android.permission.INSTALL_PACKAGES */ type = "application/vnd.android.package-archive"; } else { type = "*"; } /* 如果无法直接打开,就跳出软件列表给用户选择 */ if (end.equals("apk")) { } else { type += "/*"; } return type; } /* 自定义删除文件方法 */ private void delFile(String strFileName) { File myFile = new File(strFileName); if (myFile.exists()) { myFile.delete(); } } /* 当Activity处于onPause状态时,更改TextView文字状态 */ @Override protected void onPause() { mTextView01 = (TextView) findViewById(R.id.myTextView1); mTextView01.setText("下载成功"); super.onPause(); } /* 当Activity处于onResume状态时,删除临时文件 */ @Override protected void onResume() { // TODO Auto-generated method stub /* 删除临时文件 */ delFile(currentTempFilePath); super.onResume(); } }
另外例子中还可以通过
System.out.println("conn.getContentLength() =" + conn.getContentLength());获取下载文件的大小,然后来实现PrgressBar的下载进度显示
评论
4 楼
冥风圣六翼
2012-05-14
楼主你抄归抄,要是能给出详细的讲解和你自己的认识我也会感谢你的,这你妹的抄一段教程上的源码过来有个P意义,连注释都抄的一样
3 楼
xurick
2011-09-23
另外例子中还可以通过
Java代码
System.out.println("conn.getContentLength() =" + conn.getContentLength());
获取下载文件的大小,然后来实现PrgressBar的下载进度显示
楼主这方面有研究过吗?我的listview中的ProgressBar不刷新进度。。。网络线程与listview中的一个元素如何关联更新的?还望指教
Java代码
System.out.println("conn.getContentLength() =" + conn.getContentLength());
获取下载文件的大小,然后来实现PrgressBar的下载进度显示
楼主这方面有研究过吗?我的listview中的ProgressBar不刷新进度。。。网络线程与listview中的一个元素如何关联更新的?还望指教
2 楼
LuoYer
2011-02-11
太好了,正好用到,感谢ing。
getFile里面strPath.equals(currentFilePath)条件下会掉一次getDataSource(strPath);
主要作用是干嘛的呢。
getFile里面strPath.equals(currentFilePath)条件下会掉一次getDataSource(strPath);
主要作用是干嘛的呢。
1 楼
edison_cool911
2010-06-21
大家可以通过这个地址进行测试:
http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
发表评论
-
WebView加载网页进度条显示
2012-03-06 19:52 2315重写WebChromeClient一个方法进行进度条显示: ... -
基于UDP协议的数据交互例子
2011-12-18 11:06 1692直接贴上代码: 客户端: package com.exam ... -
一种更灵活的数据传输方式:HTTP(2)
2011-12-16 11:18 2978HTTP是大多数应用程序中常用的与服务端交互的通讯方式 ... -
一种更灵活的数据传输方式:HTTP(1)
2011-12-16 10:52 1942使用WebService虽然 ... -
重用WebView的cache图片文件
2011-09-15 15:06 2017如何从WebView使用的cache文件夹中重复使用一些图片资 ... -
开,关闭GPRS的简单Demo
2011-06-09 10:54 2723Android应用中开,关闭GPRS的简单Demo,可能在有的 ... -
Intent打开各种类型文件
2011-04-10 18:22 4414//android获取一个用于打开PPT文件的intent ... -
图片Url保存为位图并进行缩放操作
2010-10-12 15:33 13501.通过传入图片url获取位图方法: public Bit ... -
判断手机有无网络
2010-09-15 16:18 2835ConnectivityManager cwjManage ... -
GoogleMap(通过输入地址,查询显示在google 地图上)
2010-08-15 10:18 4648主Activity: package net.blogja ... -
Android手机使用中国电信天翼上网设置
2010-08-07 16:01 3831众所周知Android手机的上网功能需要用到APN(网络接入点 ... -
GPS取得卫星个数
2010-08-07 15:09 2933LocationManager manager = (Lo ... -
连接服务器超时的Demo
2010-08-05 11:49 2411下面这个例子是连接网络超时的例子: package cn. ... -
下载网络文件到SD卡上
2010-08-02 19:07 3358下面一个一个类的来进行介绍: 1.DownLoadProgre ... -
下载网路图片到SD卡上新建文件夹当中
2010-07-27 22:52 31841.DownloadImages.java文件 packa ... -
sax方式解析xml文件(asset文件和网络文件)
2010-07-11 17:16 1959现在写了些博客后,变懒 ... -
xml中DOM对象的学习
2010-07-03 13:57 1276DOM的基本对象有5个:Doc ... -
DOM方式解析xml文件3(assets中xml文件)
2010-07-03 13:44 2557这个例子是进一步熟悉DOM解析xml文件的方法,附带基础的文档 ... -
DOM方式解析xml文件2(解析本地xml)
2010-07-01 20:42 1581这个与1的方法唯一不同的就是传递InputSource的参数: ... -
DOM方式解析xml文件1(解析网路xml)
2010-07-01 20:14 1579其实网上很多资料讲关 ...
相关推荐
#### 一、安装APK文件到Android模拟器 在进行Android应用程序开发的过程中,开发者经常需要在模拟器上安装APK文件以进行测试。APK(Android Package Kit)文件是一种Android平台上的安装包格式,类似于Windows平台...
8. **开发者工具集**:对于专业开发者,手机顽童模拟器可能提供了ADB(Android Debug Bridge)支持,方便进行日志查看、安装卸载APK、远程调试等操作。 9. **社区支持**:作为一款Beta版软件,开发者通常会有活跃的...
如果你想要直接安装apk文件,可以找到生成的`platforms/android/build/outputs/apk`目录下的apk文件,通过adb(Android Debug Bridge)工具将其推送到设备上,或者通过USB连接设备并在设置中开启未知来源安装权限,...
- 下载的APK文件需要保存到本地,通常选择`getExternalFilesDir()`或`getCacheDir()`方法获取外部存储或内部缓存目录,以便在用户安装前保存APK。 4. **权限管理**: - 自Android 6.0(API级别23)起,运行时权限...
在Android平台上,开发人员经常需要从远程服务器下载并安装应用的源码,以便进行调试、学习或更新。本文将深入探讨如何实现这一过程,并提供一个详细的步骤指南。 首先,了解Android应用的生命周期和安装机制是至关...
4. **adb install xxx.apk** - 安装指定的APK文件到模拟器或真实手机。 5. **adb uninstall 应用程序的包名** - 卸载指定的应用程序。 6. **adb push pc_file phone_file** - 将电脑上的文件复制到手机上。 7. **adb...
2. **打包Uiautomator到apk**:将编写好的Uiautomator代码作为apk的一个部分,通常放在assets或res目录下,确保在安装apk时一并部署。 3. **启动服务**:在apk的主程序或者自定义的BroadcastReceiver中,通过反射...
只需将这个apk文件通过蓝牙、USB或者网络下载到Android设备上,然后通过文件管理器找到并点击安装,遵循屏幕提示完成安装过程即可。需要注意的是,由于安全设置,可能需要在设备的“设置”中开启“未知来源”的应用...
安装APK到设备或模拟器上,Java代码可以通过JNI调用C/C++实现的功能。如果需要调试C/C++代码,可以使用NDK提供的gdbserver和Android Studio的远程调试功能。 总结,这个压缩包包含了一个完整的例子,展示了如何在...
如果你是开发者,可以安装Android Studio,并通过它将APK文件部署到模拟器中进行调试和测试。 9. 为了进一步优化体验,你可以在Parallels Desktop的设置中调整虚拟机的性能参数,比如增加分配给Android的内存,或者...
例如,发送"adb devices"命令以检查连接的设备,或者"adb install"命令来安装APK文件。 描述中提到的Winform是Windows Forms,它是.NET Framework提供的一个用于构建桌面应用程序的库。在这个项目中,开发者可能...
2. **安装和管理软件包**:通过apt-get或adb命令安装、更新、卸载APK文件。 3. **调试系统服务**:检查系统状态,启动、停止或重启服务。 4. **运行脚本**:支持运行bash、python等脚本文件,自动化执行一系列操作...
2. **安装应用**:`adb install <apk路径>`,例如`adb install path/to/your/app.apk`,将APK文件安装到设备上。 3. **卸载应用**:`adb uninstall <包名>`,如`adb uninstall com.example.myapp`,删除指定应用。 ...
描述中提到,“android上面执行终端的程序,安装就可以使用”,意味着用户可以通过安装这个APK文件(migoolan.terminal.apk)在Android设备上获得一个终端工具,无需额外的配置或权限,安装完成后就能直接运行,执行...
4. **安装软件**:ADB能够方便地安装APK文件到设备或模拟器,这对于测试和部署应用非常方便。 5. **Monkey测试**:ADB附带了一个名为Monkey的工具,可以生成随机用户事件流,用于压力测试应用的稳定性。 6. **日志...
ADB(Android Debug Bridge)是Android开发中的一个强大工具,它允许开发者通过USB或网络连接对设备进行调试、传输文件、运行命令以及管理Android设备或模拟器。本压缩包提供了ADB远程调试的相关工具和指南,帮助...