Я пытаюсь скопировать свою предварительно заполненную базу данных в доступный для записи каталог (я имею в виду SD-карту), для этого нужно в основном скопировать всю мою папку ресурсов в моем приложении Android PhoneGap.
Я провел несколько дней исследований, и из-за моего очень ограниченного знания Java, я не могу создать этот плагин Java, чтобы сделать простое копирование, и тогда я не совсем уверен, как на самом деле вызвать этот плагин из моего HTML / Javascript.
Ниже приведен текущий плагин Java, над которым я работал, используя образец кода, найденный в сети, может кто-нибудь, пожалуйста, помогите направить меня в правильном направлении.
JAVA PLUGIN:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.json.JSONArray;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
public class DataBaseHelper extends Plugin
{
@Override
public PluginResult execute(String arg0, JSONArray arg1, String arg2)
{
try
{
String pName = this.getClass().getPackage().getName();
this.copy("Databases.db","/data/data/"+pName+"/app_database/");
this.copy("0000000000000001.db","/data/data/"+pName+"/app_database/file__0/");
}
catch (IOException e)
{
e.printStackTrace();
}
// TODO Auto-generated method stub
String value = "OK";
return new PluginResult(PluginResult.Status.OK, value);
}
//Copy Paste this function in the class where you used above part
void copy(String file, String folder) throws IOException
{
File CheckDirectory;
CheckDirectory = new File(folder);
if (!CheckDirectory.exists())
{
CheckDirectory.mkdir();
}
InputStream in = this.ctx.getAssets().open(file);
OutputStream out = new FileOutputStream(folder+file);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len; while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
in.close(); out.close();
}
}
JAVASCRIPT PLUGIN CALL:
<script type="text/javascript" charset="utf-8" src="taxapp.js"></script>
function onDeviceReady() // CALLING THIS ON BODY LOAD
{
dataCapture();
window.plugins.DataBaseHelper.copy("",function(data)
{
alert("plugin called part 1");
// nothing to do here
},
function()
{
alert("plugin called part 2");
console.warn("Error calling plugin");
});
}
Любая помощь будет принята с благодарностью, так как мне нужно исправить это сегодня. Заранее спасибо.