PDF、Doc与Dwg格式的文件怎么在Android 应用中打开
发布时间:2020-12-03 14:45:57
来源:亿速云
阅读:95
作者:Leah
本篇文章为大家展示了PDF、Doc与Dwg格式的文件怎么在Android 应用中打开,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
代码:
这是一个单独的类 首先接收intent传过来的url我是用url的后14位作为存储本地的文件名(这里根据自己服务器的文件命名规则而定) 拿到文件路径之后 判断本地是否有此文件 有则打开没有则从服务器上下载并打开 ;
Intent intent = act.getIntent();
final String Strname = intent.getStringExtra("docurl");
//截取最后14位 作为文件名
String s = Strname.substring(Strname.length()-14);
//文件存储
file1 = new File(Environment.getExternalStorageDirectory(), getFileName(s));
new Thread() {
public void run() {
File file = new File( file1.getAbsolutePath());
//判断是否有此文件
if (file.exists()) {
//有缓存文件,拿到路径 直接打开
Message msg = Message.obtain();
msg.obj = haha;
msg.what = DOWNLOAD_SUCCESS;
handler.sendMessage(msg);
mProgressDialog.dismiss();
return;
}
// 本地没有此文件 则从网上下载打开
File downloadfile = downLoad(Strname, file1.getAbsolutePath(), mProgressDialog);
// Log.i("Log",file1.getAbsolutePath());
Message msg = Message.obtain();
if (downloadfile != null) {
// 下载成功,安装....
msg.obj = downloadfile;
msg.what = DOWNLOAD_SUCCESS;
} else {
// 提示用户下载失败.
msg.what = DOWNLOAD_ERROR;
}
handler.sendMessage(msg);
mProgressDialog.dismiss();
};
}.start();
下载文档代码;
传入需要下载的文档的url 和存入内存的路径和dialog
public static File downLoad(String serverpath, String savedfilepath, ProgressDialog pd) {
try {
URL url = new URL(serverpath);
HttpURLConnection cOnn= (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200) {
int max = conn.getContentLength();
pd.setMax(max);
InputStream is = conn.getInputStream();
File file = new File(savedfilepath);
FileOutputStream fos = new FileOutputStream(file);
int len = 0;
byte[] buffer = new byte[1024];
int total = 0;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
total += len;
pd.setProgress(total);
}
fos.flush();
fos.close();
is.close();
return file;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
打开文件选择器
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case DOWNLOAD_SUCCESS:
File file = (File) msg.obj;
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType (Uri.fromFile(file), "application/pdf");
// startActivity(intent);
startActivity(Intent.createChooser(intent, "标题"));
/**
* 弹出选择框之后 把本activity销毁
*/
finish();
break;
case DOWNLOAD_ERROR:
Util.showToast(act,"文件加载失败");
break;
}
}
};
整体代码
public class list_item_doc extends BaseActivity {
private ProgressDialog mProgressDialog;
// 下载失败
public static final int DOWNLOAD_ERROR = 2;
// 下载成功
public static final int DOWNLOAD_SUCCESS = 1;
private File file1;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
initView();
}
private void initView() {
// TODO Auto-generated method stub
Intent intent = act.getIntent();
final String Strname = intent.getStringExtra("url");
mProgressDialog = new ProgressDialog(act);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
//截取最后14位 作为文件名
String s = Strname.substring(Strname.length()-14);
//文件存储
file1 = new File(Environment.getExternalStorageDirectory(), getFileName(s));
new Thread() {
public void run() {
File haha = new File( file1.getAbsolutePath());
//判断是否有此文件
if (haha.exists()) {
//有缓存文件,拿到路径 直接打开
Message msg = Message.obtain();
msg.obj = haha;
msg.what = DOWNLOAD_SUCCESS;
handler.sendMessage(msg);
mProgressDialog.dismiss();
return;
}
// 本地没有此文件 则从网上下载打开
File downloadfile = downLoad(Strname, file1.getAbsolutePath(), mProgressDialog);
// Log.i("Log",file1.getAbsolutePath());
Message msg = Message.obtain();
if (downloadfile != null) {
// 下载成功,安装....
msg.obj = downloadfile;
msg.what = DOWNLOAD_SUCCESS;
} else {
// 提示用户下载失败.
msg.what = DOWNLOAD_ERROR;
}
handler.sendMessage(msg);
mProgressDialog.dismiss();
};
}.start();
}
/**
* 下载完成后 直接打开文件
*/
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case DOWNLOAD_SUCCESS:
File file = (File) msg.obj;
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType (Uri.fromFile(file), "application/pdf");
// startActivity(intent);
startActivity(Intent.createChooser(intent, "标题"));
/**
* 弹出选择框 把本activity销毁
*/
finish();
break;
case DOWNLOAD_ERROR:
Util.showToast(act,"文件加载失败");
break;
}
}
};
/**
*
*/
/**
* 传入文件 url 文件路径 和 弹出的dialog 进行 下载文档
*/
public static File downLoad(String serverpath, String savedfilepath, ProgressDialog pd) {
try {
URL url = new URL(serverpath);
HttpURLConnection cOnn= (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
if (conn.getResponseCode() == 200) {
int max = conn.getContentLength();
pd.setMax(max);
InputStream is = conn.getInputStream();
File file = new File(savedfilepath);
FileOutputStream fos = new FileOutputStream(file);
int len = 0;
byte[] buffer = new byte[1024];
int total = 0;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
total += len;
pd.setProgress(total);
}
fos.flush();
fos.close();
is.close();
return file;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String getFileName(String serverurl) {
return serverurl.substring(serverurl.lastIndexOf("/") + 1);
}
}
上述内容就是PDF、Doc与Dwg格式的文件怎么在Android 应用中打开,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。