2012-09-14 4 views
2

Я использовал плагин для скриншотов для ios, когда я разработал приложение iphone/ipad. Теперь я создаю версию приложения для Android и пытаюсь реализовать версию Android для плагина.Ошибка JSON при вызове плагина phonegap.

Моя ява часть Ф.О. плагина выглядит следующим образом:

package org.apache.cordova; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import org.apache.cordova.api.Plugin; 
import org.apache.cordova.api.PluginResult; 
import org.json.JSONArray; 

import android.graphics.Bitmap; 
import android.os.Environment; 
import android.view.View; 

public class Screenshot extends Plugin { 
private PluginResult result = null; 

@Override 
public PluginResult execute(String action, JSONArray args, String callbackId) { 
    // starting on ICS, some WebView methods 
    // can only be called on UI threads 
    super.cordova.getActivity().runOnUiThread(new Runnable() { 
     public void run() { 
      View view = webView.getRootView(); 

      view.setDrawingCacheEnabled(true); 
      Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); 
      view.setDrawingCacheEnabled(false); 

      try { 
       File folder = new File(Environment.getExternalStorageDirectory(), "Pictures"); 
       if (!folder.exists()) { 
        folder.mkdirs(); 
       } 

       File f = new File(folder, "screenshot_" + System.currentTimeMillis() + ".png"); 

       FileOutputStream fos = new FileOutputStream(f); 
       bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 
       result = new PluginResult(PluginResult.Status.OK); 

      } catch (IOException e) { 
       result = new PluginResult(PluginResult.Status.IO_EXCEPTION, e.getMessage()); 
      } 
     } 
    }); 

    // waiting ui thread to finish 
    while (this.result == null) { 
     try { 
      Thread.sleep(100); 
     } catch (InterruptedException e) { 
      // ignoring exception, since we have to wait 
      // ui thread to finish 
     } 
    } 

    return this.result; 
} 

} 

Мои Screenshot.js выглядит следующим образом:

(function() { 
/* Get local ref to global PhoneGap/Cordova/cordova object for exec function. 
    - This increases the compatibility of the plugin. */ 
var cordovaRef = window.PhoneGap || window.Cordova || window.cordova; // old to new fallbacks 

/** 
* This class exposes the ability to take a Screenshot to JavaScript 
*/ 
function Screenshot() { } 

/** 
* Save the screenshot to the user's Photo Library 
*/ 
Screenshot.prototype.saveScreenshot = function() { 
cordovaRef.exec(null, null, "Screenshot", "saveScreenshot", []); 
}; 

    if (!window.plugins) { 
     window.plugins = {}; 
    } 
    if (!window.plugins.screenshot) { 
     window.plugins.screenshot = new Screenshot(); 
    } 

})(); /* End of Temporary Scope. */ 

Теперь я пытаюсь вызвать мою функцию screenshot.js с помощью этого кода :

function takeScreenShot() { 
    cordovaRef.exec("Screenshot.saveScreenshot"); 
} 

Однако все, что я получаю, это ошибки JSON, я знаю, что где-то я просил его преобразовать в JSON из java string, но я просто не могу понять, как его изменить. Хорошо хорошо, я думаю, что это то, что не так ...

Мои ошибки выглядеть следующим образом:

ERROR: org.json.JSONException: Value undefined of type java.lang.String cannot be converted to JSONArray. 
Error: Status=8 Message=JSON error 
file:///android_asset/www/cordova-2.0.0.js: Line 938 : Error: Status=8 Message=JSON error 
Error: Status=8 Message=JSON error at file:///android_asset_/www/cordova-2.0.0.js:938 

Может кто-нибудь наставит меня, где я собираюсь неправильно, пожалуйста?

+0

Возможный дубликат плагина плагина Phonegap в Кордове 2.0.0] (http://stackoverflow.com/questions/12424865/phonegap-screenshot-plugin-in-cordova-2-0-0) –

ответ

Смежные вопросы