将html文件放到assets目录下,我所知道的访问的方式有两种,一种是使用webview,一种是使用流,使用webView比较容易实现,使用流的话需要先将html文件复制到sdcard中,然后再打开;参考了网上许多资料,均未能实现直接打开的方法。
下面是源码,界面上只有一个按钮,所以布局文件就没有给出,
是将assets目录下的html文件复制到sdcard的工具类。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.findViewById(R.id.localHtml).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
//获取html文件复制到sdcard后的路径,test.html是我放到项目中assets目录下的网页文件
String path = new AssertToSdcard().transFilePath(
MainActivity.this, "test.html");
if (null != path) {
// Uri content_url = Uri.parse("file:///storage/sdcard/test.html");
//使用此种方法获取uri或者使用上面注释的方法获取uri
Uri content_url = Uri.fromFile(new File(path));
intent.setData(content_url);
//intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
intent.setComponent(new ComponentName("com.android.browser","com.android.browser.BrowserActivity"));
startActivity(intent);
} else {
Log.e("--->", "no path");
}
}
});
}
}
public class AssertToSdcard {
private InputStream is;
private OutputStream os;
private File sdcardFile = null;
private String sdcardFilePath = null;
/**
*
* @param context
* 用于获取sd路径
* @param AssetsFileName
* 放入assets中的html文件名
* @return
* AssetsFileName文件复杂到sd卡后的路径
*/
public String transFilePath(Context context, String AssetsFileName) {
sdcardFile = getSdcardPath();
if (null == sdcardFile) {
return null;
}
sdcardFilePath = sdcardFile + File.separator + AssetsFileName;
Log.i("--->", "" + sdcardFile.getAbsolutePath());
if (new File(sdcardFilePath).exists()) {
return sdcardFilePath;
}
try {
is = context.getAssets().open(AssetsFileName);
os = new FileOutputStream(sdcardFilePath);
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) > 0) {
os.write(buffer, 0, count);
}
os.close();
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sdcardFilePath;
}
private File getSdcardPath() {
File sdcardpath = null;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
sdcardpath = Environment.getExternalStorageDirectory();
}
return sdcardpath;
// TODO Auto-generated method stub
}
}