Android 无法提取从google play应用程序下载的obb文件
我成功实现了apk扩展,并在Android->obb->PackageName->com.1.com.PackageName.obb下载了obb文件 但当我去提取时,我得到了问题.Eof文件异常 在日志解压例外2中 例外情况:- java.io.FileNotFoundException:/storage/sdcard0/.MyApp/BGP050@2x.jpg:open失败:enoint(没有这样的文件或目录) 如果有人有想法,请提前回复,谢谢 函数从调用中提取文件 功能如下所示Android 无法提取从google play应用程序下载的obb文件,android,zip,extract,expansion,Android,Zip,Extract,Expansion,我成功实现了apk扩展,并在Android->obb->PackageName->com.1.com.PackageName.obb下载了obb文件 但当我去提取时,我得到了问题.Eof文件异常 在日志解压例外2中 例外情况:- java.io.FileNotFoundException:/storage/sdcard0/.MyApp/BGP050@2x.jpg:open失败:enoint(没有这样的文件或目录) 如果有人有想法,请提前回复,谢谢 函数从调用中提取文件 功能如下所示 试试这个:-
试试这个:- 经过一番挣扎,我终于找到了一个解决办法。我在ubuntu12.04中右键单击,将整个文件夹及其子文件夹都压缩 但在此之后,我尝试选择所有图像/文件,然后将它们压缩到新文件夹。 通过上面的代码,我成功地提取了所有文件
谢谢 亲爱的!这救了我!工作完美!非常感谢@“ubuntu12.04”是什么意思?请告诉我必须将.obb路径放在哪里。我在“android/obb/”中有它。我下载了.obb文件,但我不知道如何获取我的原始文件,即读取器可读的“.zim”文件。我必须在哪里实现上述代码?到我的downloader活动或其他区域。@user2592807,我需要将其放在downloader活动中,在该活动中,应用程序连接到play store server以检查obb文件。但它给我的错误是“Constant and flag”不能作为变量解析?我现在能做什么?@user2592807,常量是自定义类,您可以使用自己的类并在顶部声明文件夹。
public void extract()
{
String packageName = getApplicationContext().getPackageName();
File root = Environment.getExternalStorageDirectory();
File expPath = new File(root.toString() + "/Android/obb/" + packageName);
if (expPath.exists()) {
String strMainPath = null;
try {
strMainPath = expPath + File.separator + "main."
+ getPackageManager().getPackageInfo(
getPackageName(), 0).versionCode + "."
+ packageName + ".obb";
Log.e("Extract File path", "===>"+strMainPath);
File f=new File(strMainPath);
if(f.exists()){
Log.e("Extract From File path", "===> not exist");
}
else
{
Log.e("Extract From File path", "===> exist");
}
flag = extractZip(strMainPath,Environment.getExternalStorageDirectory()+"/"+Constant.FOLDERNAME);
Log.e("After Extract Zip", "===>"+flag);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private boolean extractZip(String pathOfZip,String pathToExtract)
{
int BUFFER_SIZE = 1024;
int size;
byte[] buffer = new byte[BUFFER_SIZE];
try {
File f = new File(pathToExtract);
if(!f.isDirectory()) {
f.mkdirs();
}
ZipInputStream zin = new ZipInputStream(new BufferedInputStream(new FileInputStream(pathOfZip), BUFFER_SIZE));
try {
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
String path = pathToExtract +"/"+ ze.getName();
if (ze.isDirectory()) {
File unzipFile = new File(path);
if(!unzipFile.isDirectory()) {
unzipFile.mkdirs();
}
}
else {
FileOutputStream out = new FileOutputStream(path, false);
BufferedOutputStream fout = new BufferedOutputStream(out, BUFFER_SIZE);
try {
while ( (size = zin.read(buffer, 0, BUFFER_SIZE)) != -1 ) {
fout.write(buffer, 0, size);
}
zin.closeEntry();
}catch (Exception e) {
Log.e("Exception", "Unzip exception 1:" + e.toString());
}
finally {
fout.flush();
fout.close();
}
}
}
}catch (Exception e) {
Log.e("Exception", "Unzip exception2 :" + e.toString());
}
finally {
zin.close();
}
return true;
}
catch (Exception e) {
Log.e("Exception", "Unzip exception :" + e.toString());
}
return false;
}