Note that there are some explanatory texts on larger screens.

plurals
  1. POjava.lang.String cannot be converted to JSON object
    primarykey
    data
    text
    <p>my Downloader.java file is</p> <pre><code>package com.phonegap.plugins.downloader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; import com.phonegap.api.Plugin; import com.phonegap.api.PluginResult; public class Downloader extends Plugin { @Override public PluginResult execute(String action, JSONArray args, String callbackId) { if (!action.equals("downloadFile")) return new PluginResult(PluginResult.Status.INVALID_ACTION); try { String fileUrl = args.getString(0); JSONObject params = args.getJSONObject(1); String fileName = params.has("fileName") ? params.getString("fileName"): fileUrl.substring(fileUrl.lastIndexOf("/")+1); String dirName = params.has("dirName") ? params.getString("dirName"): "sdcard/download"; Boolean overwrite = params.has("overwrite") ? params.getBoolean("overwrite") : false; return this.downloadUrl(fileUrl, dirName, fileName, overwrite, callbackId); } catch (JSONException e) { e.printStackTrace(); return new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage()); } catch (InterruptedException e) { e.printStackTrace(); return new PluginResult(PluginResult.Status.ERROR, e.getMessage()); } } private PluginResult downloadUrl(String fileUrl, String dirName, String fileName, Boolean overwrite, String callbackId) throws InterruptedException, JSONException { try { Log.d("PhoneGapLog", "Downloading "+fileUrl + " into " + dirName + "/" + fileName); File dir = new File(dirName); if (!dir.exists()) { Log.d("PhoneGapLog", "directory " + dirName + " created"); dir.mkdirs(); } File file = new File(dirName, fileName); if (!overwrite &amp;&amp; file.exists()) { Log.d("DownloaderPlugin", "File already exist"); JSONObject obj = new JSONObject(); obj.put("status", 1); obj.put("total", 0); obj.put("file", fileName); obj.put("progress", 100); return new PluginResult(PluginResult.Status.OK, obj); } URL url = new URL(fileUrl); HttpURLConnection ucon = (HttpURLConnection) url.openConnection(); ucon.setRequestMethod("GET"); ucon.setDoOutput(true); ucon.connect(); Log.d("PhoneGapLog", "Download start"); InputStream is = ucon.getInputStream(); byte[] buffer = new byte[1024]; int readed = 0, progress = 0, totalReaded = 0, fileSize = ucon.getContentLength(); FileOutputStream fos = new FileOutputStream(file); while ((readed = is.read(buffer)) &gt; 0) { fos.write(buffer, 0, readed); totalReaded += readed; int newProgress = (int) (totalReaded*100/fileSize); if (newProgress != progress) progress = informProgress(fileSize, newProgress, fileName, callbackId); } fos.close(); Log.d("PhoneGapLog", "Download finished"); JSONObject obj = new JSONObject(); obj.put("status", 1); obj.put("total", fileSize); obj.put("file", fileName); obj.put("progress", progress); return new PluginResult(PluginResult.Status.OK, obj); } catch (FileNotFoundException e) { Log.d("PhoneGapLog", "File Not Found: " + e); return new PluginResult(PluginResult.Status.ERROR, 404); } catch (IOException e) { Log.d("PhoneGapLog", "Error: " + e); return new PluginResult(PluginResult.Status.ERROR, e.getMessage()); } } private int informProgress(int fileSize, int progress, String fileName, String callbackId) throws InterruptedException, JSONException { JSONObject obj = new JSONObject(); obj.put("status", 0); obj.put("total", fileSize); obj.put("file", fileName); obj.put("progress", progress); PluginResult res = new PluginResult(PluginResult.Status.OK, obj); res.setKeepCallback(true); success(res, callbackId); //Give a chance for the progress to be sent to javascript Thread.sleep(100); return progress; } } </code></pre> <p>my downloader.js file is</p> <pre><code>function Downloader() {} Downloader.prototype.downloadFile = function(fileUrl,dirName,fileName,overwrite,win,fail) { //Make params hash optional. if (!fail) win = params; PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl, dirName,fileName,overwrite]); }; PhoneGap.addConstructor(function() { PhoneGap.addPlugin("downloader", new Downloader()); PluginManager.addService("Downloader", "com.phonegap.plugins.downloader.Downloader"); }); </code></pre> <p>and main.js file is</p> <pre><code>function downloadfile() { window.plugins.downloader.downloadFile("c:/Users/460725/Desktop/NIACustomerPhase.pdf","sdcard/cache/","NIACustomerPhase.pdf", false, function(data){ if(data=="exist"){ alert("File already exist"); } else{ alert("File saved on sd card") } },function(data){ alert("error: "+data); }); } </code></pre> <p>I have this integrated into android phonegap project.But when i run the project , I get Ale rt Error:Value sdcard/cache/ at 1 of type java.lang.String cannot be converted to JSON object a Can anyone tell what could be the problem..Thanks in advance..</p> <hr> <p>I have replaced the same code with previous and also changed the url.Now my main.js file is </p> <pre><code>function downloadfile () { window.plugins.downloader.downloadFile("http://www.toforge.com/archive.zip","sdcard/cache/","archive.zip", false, function(data){ if(data=="exist"){ alert("File already exist"); } else{ alert("File saved on sd card"); } },function(data){ alert("error: "+data); }); } </code></pre> <p>now i am getting an error alert when i am clicking on download file link <strong>unable to resolve host "www.toforge.com": No address associated with host name</strong> can anybody help me to resolve this error?? thanks in advance..</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload