(代码)Android 实现调用wps打开word文档,打开pdf文档

废话不多说,直接看代码,新建个activity,声明,点击事件,省略。亲测可用,看代码 

Button lookdoc;
lookdoc = (Button)findViewById(R.id.lookdoc);
lookdoc.setOnClickListener(looklisten);

OnClickListener looklisten = new OnClickListener() {

		@Override
		public void onClick(View v) {
			DownLoadUtil d = new DownLoadUtil();
			//获取文件的类型
			String filetype = filename.substring(filename.lastIndexOf(".")+1,filename.length());
			if("jpg".equals(filetype)||"jpeg".equals(filetype)||"bmp".equals(filetype)||"gif".equals(filetype)||"png".equals(filetype)){
				Toast.makeText(PreceptInfoActivity.this, "文件类型错误", Toast.LENGTH_LONG).show();
			}else{
				//检测是否安装了wps软件,没有安装则去下载
				if(isAvilible(PreceptInfoActivity.this, "cn.wps.moffice_eng")){
					//先查看本地是否存在此文件。存在就立即访问。否则再去下载
					// 获得存储卡的路径
					String sdpath = Environment.getExternalStorageDirectory()
							+ "/";
					String sdcard2 = sdpath + "download/"+DownLoadUtil.urldecodeUTF8(filename).substring(DownLoadUtil.urldecodeUTF8(filename).lastIndexOf("/")+1);
					File file = new File(sdcard2);
					// 判断文件目录是否存在
					if (file.exists()) {
						Intent intent = new Intent();
						Bundle bundle = new Bundle();
						bundle.putString("OpenMode", "ReadOnly");// 只读模式
						intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
						intent.setAction(android.content.Intent.ACTION_VIEW);
						intent.setClassName("cn.wps.moffice_eng",
								"cn.wps.moffice.documentmanager.PreStartActivity2");
						Uri uri = Uri.fromFile(new File(sdcard2));
						Log.e("wps访问的uri", uri+"");
						intent.setData(uri);
						intent.putExtras(bundle);
						try {
							startActivity(intent);
						} catch (ActivityNotFoundException e) {
							e.printStackTrace();
						} 
					}else{
						//返回真实路径
						mSavePath = d.downloadFile(filename);
						if(mSavePath!=""){
							Intent intent = new Intent();
							Bundle bundle = new Bundle();
							bundle.putString("OpenMode", "ReadOnly");// 只读模式
							intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
							intent.setAction(android.content.Intent.ACTION_VIEW);
							intent.setClassName("cn.wps.moffice_eng",
									"cn.wps.moffice.documentmanager.PreStartActivity2");
							Uri uri = Uri.fromFile(new File(mSavePath+DownLoadUtil.urldecodeUTF8(filename.substring(filename.lastIndexOf("/")+1,filename.length()))));
							Log.e("wps访问的uri", uri+"");
							intent.setData(uri);
							intent.putExtras(bundle);
							try {
								startActivity(intent);
							} catch (ActivityNotFoundException e) {
								e.printStackTrace();
							} 
						}else{
							mDownloadDialog.show();
							Toast.makeText(PreceptInfoActivity.this, "下载中", Toast.LENGTH_SHORT).show();
						}
					}
				}else{
						// 从市场上下载
					 	 Uri uri = Uri.parse("market://details?id=cn.wps.moffice_eng");
	                    // 直接从指定网址下载
	                    Intent it = new Intent(Intent.ACTION_VIEW, uri); 
	                    startActivity(it); 
				}
			}
			
		}
	};
private boolean isAvilible( Context context, String packageName )
    {
        final PackageManager packageManager = context.getPackageManager();
        // 获取所有已安装程序的包信息
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        for ( int i = 0; i < pinfo.size(); i++ )
        {
            if(pinfo.get(i).packageName.equalsIgnoreCase(packageName))
                return true;
        }
        return false;
    }

 

2019年12月30日    附上 DownLoadUtil

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import android.os.Environment;
import android.util.Log;

public class DownLoadUtil {
	/** sd卡目录路径 */
	private String sdcard;

	// public DownLoadUtil(String url)
	// {
	// this.urlstr = url;
	// //获取设备sd卡目录
	// this.sdcard = Environment.getExternalStorageDirectory() + "/";
	// urlcon = getConnection();
	// }
	public String downloadFile(String filename,String u) {
		try {
			// 判断SD卡是否存在,并且是否具有读写权限
			if (Environment.getExternalStorageState().equals(
					Environment.MEDIA_MOUNTED)) {
				// 获得存储卡的路径
				String sdpath = Environment.getExternalStorageDirectory() + "/";
				sdcard = sdpath + "download/";
				
				String finalUrl = u + filename;
				Log.e("finalUrl", finalUrl);
				URL url = new URL(finalUrl);
				
				URLConnection rulConnection = url.openConnection();
				HttpURLConnection conn = (HttpURLConnection) rulConnection;
				// 设定请求的方法为"POST",默认是GET
				conn.setRequestMethod("POST");
				conn.connect();
			
				// 创建输入流
				InputStream is = conn.getInputStream();

				File file = new File(sdcard);
				// 判断文件目录是否存在
				if (!file.exists()) {
					file.mkdir();
				}

				String filename2 = filename
						.substring(filename.lastIndexOf("/") + 1);
				
				File apkFile = new File(sdcard, urldecodeUTF8(filename2));
				// System.out.println(apkFile);
				FileOutputStream fos = new FileOutputStream(apkFile);

				// 写入到文件中

				int len = 2048;
				// 缓存
				byte buf[] = new byte[len];
				while ((len = is.read(buf)) != -1) {
					// 写入文件
					fos.write(buf, 0, len);
				}
				fos.close();
				is.close();
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 关闭下载对话框显示
		return sdcard;

	}

	public static String urlEncodeUTF8(String source) {
		String result = source;
		try {
			result = java.net.URLEncoder.encode(source, "utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return result;
	}

	public static String urldecodeUTF8(String source) {
		String result = source;
		try {
			result = java.net.URLDecoder.decode(source, "utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return result;
	}
}

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值