- 浏览: 124623 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (110)
- android动画 (9)
- android(xml相关) (2)
- android sqlite3 (0)
- android 组件学习 (5)
- android 小技巧 (8)
- android自定义组件 (2)
- android 手机服务 (5)
- android 网络相关 (9)
- android 用户界面 (6)
- 基本概念 (30)
- java基本知识 (3)
- 面试题 (2)
- android sdcard (3)
- android 文件操作 (4)
- 闲谈android风云变幻 (10)
- JNI (3)
- NDK (5)
- linux (6)
- IOS学习 (1)
- Android源码 (1)
最新评论
-
AndLi:
高手
Android 实现书籍翻页效果----原理篇 -
niuniulife2011:
没听懂,任何事情任何人都可以做吧
程序员感想 -
chenliang1234576:
程序员开网店有木有搞头撒?
程序员感想 -
liyanginchina:
请问一下,
1、 A和B分别与S的【主连接】保持联系。
那么 ...
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞 -
niuniulife2011:
一起进步,我的东西,有些是看了别人的,但是在看了别人的之后,都 ...
windows系统上使用Android NDK r5
废话少说,直接上代码,会加上详细注释:
测试地址:http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
Java代码
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();
}
}
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();
}
}
另外例子中还可以通过
Java代码
System.out.println("conn.getContentLength() =" + conn.getContentLength());
System.out.println("conn.getContentLength() =" + conn.getContentLength());获取下载文件的大小,然后来实现PrgressBar的下载进度显示
测试地址:http://www.dubblogs.cc:8751/Android/Test/Apk/EX04_14.apk
Java代码
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();
}
}
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();
}
}
另外例子中还可以通过
Java代码
System.out.println("conn.getContentLength() =" + conn.getContentLength());
System.out.println("conn.getContentLength() =" + conn.getContentLength());获取下载文件的大小,然后来实现PrgressBar的下载进度显示
发表评论
-
Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
2018-05-10 17:33 528https://blog.csdn.net/guolin_bl ... -
Volley配置OkHttp的那些事儿
2018-04-27 15:26 994前言 打一来这公司, ... -
阿里云ECS上APP访问异常或超时
2018-04-27 15:14 897App访问ECS连接超时或访问慢: 具体情况描述: 1. ... -
Android中我为什么发不了邮件--Android邮件发送详解
2012-04-16 11:01 1187Android中我为什么发不了邮件???我手机里明 ... -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
2011-08-20 15:37 2821这个标题用了两个顿号 ... -
代码中如何通过intent安装apk文件
2011-06-30 14:50 1442在系统安装的的底层常规应用中,是通过PackageInstal ... -
Android客户端Socket连接PC服务器端(转载加评论)
2011-06-30 14:39 1966先上代码: 1. SocketConnect.java文件 ... -
Services的进一步测试(使用方法)
2011-06-30 12:30 7661.界面操作类: Java代码 import an ...
相关推荐
#### 一、安装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提供的一个用于构建桌面应用程序的库。在这个项目中,开发者可能...
此外,一些专业模拟器可能还包含了用于配置和启动模拟环境的模板文件,比如CBL.V12.Simulator这样的文件。这类文件能够帮助测试人员快速搭建测试环境,使得测试工作更加高效。开发者可以依据模拟器提供的丰富功能,...
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. **日志...