public class RootPathFunction extends CordovaPlugin {
private static final String TAG = RootPathFunction.class.getSimpleName();
private String mActionName = "rootFilePath";
private Context context;
private String filePath = "/www/";
private String path;
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
context = cordova.getActivity();
Log.e(TAG, "initialize");
File root = Environment.getExternalStorageDirectory();// getDataDirectory();
File rootRes = new File(root.getPath() + filePath);
path = rootRes.getPath();
//copyAssets("www", path);
copyAssets2("www");
}
@Override
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
Log.e(TAG, "execute action=" + action + ",args=" + args.toString());
if (action.equals(mActionName)) {
callbackContext.success(path);
return true;
} else {
callbackContext.error("rootFilePath is failed!");
return false;
}
}
private void copyAssets(String assetDir, String dir) {
String[] files;
try {
files = context.getResources().getAssets().list(assetDir);
} catch (IOException e1) {
return;
}
File mWorkingPath = new File(dir);
if (!mWorkingPath.exists()) {
mWorkingPath.mkdirs();
}
for (int i = 0; i < files.length; i++) {
try {
String fileName = files[i];
if (isFolder(fileName)) {
if (0 == assetDir.length()) {
copyAssets(fileName, dir + File.separator + fileName
+ File.separator);
} else {
copyAssets(assetDir + File.separator + fileName, dir
+ File.separator + fileName + File.separator);
}
continue;
}
File outFile = new File(mWorkingPath, fileName);
if (outFile.exists())
outFile.delete();
InputStream in = null;
if (0 != assetDir.length())
in = context.getAssets().open(
assetDir + File.separator + fileName);
else
in = context.getAssets().open(fileName);
OutputStream out = new FileOutputStream(outFile);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String[] suffixs = { ".png", ".jpg", ".css", ".js", ".html", ".htm",
".jsp", ".apx", ".txt", ".LICENSE" };
private boolean isFolder(String fileName) {
for (int i = 0; i < suffixs.length; i++) {
if (fileName.contains(suffixs[i])) {
return false;
}
}
return true;
}
private void copyAssets2(String assetDir) {
String[] files;
try {
files = context.getResources().getAssets().list(assetDir);
} catch (IOException e1) {
return;
}
for (int i = 0; i < files.length; i++) {
try {
String fileName = files[i];
if (isFolder(fileName)) {
continue;
}
FileOutputStream fileOutputStream = context.openFileOutput(fileName, context.MODE_WORLD_WRITEABLE);
InputStream in = null;
if (0 != assetDir.length())
in = context.getAssets().open(
assetDir + File.separator + fileName);
else
in = context.getAssets().open(fileName);
OutputStream out = fileOutputStream;
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
在工程目录assets下的文件,将目录下的文件复制到手机内存或者SD卡内存中。
文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar
内涵Mono.Data.Sqlite.dll以及System.Data.dll
在main文件夹下新建assets文件,然后再assets文件中新建namelist.json文件夹,将json数据复制到test.json文件中。 2、访问json文件 try { AssetManager assetManager = getAssets(); // 获得assets资源管理器...
微信小程序-咩咩单词 说明: ...assets — 存放字体文件 images — 存放项目图片文件 pages — 存放项目页面文件 data — 存放单词数据文件 开发环境: 微信web开发者工具 v0.11.122100 项目截图: ...
4. 飞机等模型的模型方向是反的,可以手动编辑gltf文件中的node属性下的matrix进行调整,matrix含义可以参考 https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial 5. 大部分模型包含...
src/assets/js/ezuikit.js
Android高级应用源码-文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.zip
方舟游戏框架,一个 2D...Android Sample/assets/data/fonts/font.json Android Sample/assets/images/background/splash.json Android Sample/assets/images/background/title.json Android Sample/assets/images/inte
NGUI 插件, 可以用在 unity 5.x, 若NGUI-Font Maker显示FreeType.dylib is missing, 拷贝/~/Assets/NGUI/Editor/x86/FreeType.dylib 到 /usr/local/lib/FreeType.dylib
go-echarts运行需要的几个文件被墙,解压放到本地工程目录即可,在代码http.HandleFunc("/", handler)上面加一行http.Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(http.Dir("./assets"))))
免费版每日只有1000次,已为大家准备5个APPKEY,为了更充足的请求次数,请自行申请天气API,填写到weatherKeys数组中(index.html 301行)。使用个性字体:站名「造字工房尚雅」;正文「汉仪跳跳体」。为了性能,使用...
刚刚上传了一个相同的资源,当前确实对工程的引用,这里重新发布一个正确的版本。
ficus.zip,typesafe配置的scala友好包装伙伴typesafe配置的scala友好伙伴-移动到https://github.com/iheartradio/ficus
Assets文件介绍 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity里面调用getAssets() 来获取AssetManager引用。 2. 再用AssetManager的open(String...
文件夹的创建将raw中文件放到SD卡中将assets中文件保存到SD卡中压缩包的解压文件的删除功能.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
下载正版原版程序: ...Windows 平台,将下载的charles.jar文件覆盖到安装目录下的lib文件夹下即可完成破解! Mac 平台,将下载的charles.jar文件右键 Charles.app 显示包内容,覆盖到Content->Java下即可完成破解!
错误是这样发生的: //在vue component组件中引入less文件 <style lang="less">...Can't resolve './@/assets/css/public/layout.less' in 'D:\mt\src\layout' in D:\mt\src\layout\default.vue (line
【Android 安装包优化】Android 应用中 7zr 可执行程序准备 ( Android Studio 导入可执行 7zr 程序 | 从 Assets 资源文件拷贝 7zr 到内置存储 ) https://hanshuliang.blog.csdn.net/article/details/116244983 博客...