我已經編寫了用於從Carrousel滑塊中獲取當前頁面的代碼,並通過電子郵件和MMS使用Android中的Java爲手機項目共享。Android應用程序的Java代碼中的實例化異常
這是我的Java代碼:
public class Share extends CordovaPlugin {
private FileOutputStream outStream;
private File file;
Bitmap bm;
public static final String ACTION_POSITION = "ShareImage";
Context context;
public Share(Context context) {
this.context = context;
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
if (ACTION_POSITION.equals(action)) {
try {
JSONObject arg_object = args.getJSONObject(0);
Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
sendIntent.setType("image/jpg");
String uri = "@drawable/"+arg_object.getString("image")+".jpg";
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
bm = BitmapFactory.decodeResource(context.getResources(), imageResource);
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
file = new File(extStorageDirectory, "image.png");
try {
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, arg_object.getString("image"));
this.cordova.getActivity().startActivity(sendIntent);
} catch (Exception e) {
System.err.println("Exception: " + e.getMessage());
callbackContext.error(e.getMessage());
return false;
}
}
return true;
}
}
一切順利,但是當我點擊「分享」按鈕,我得到的異常爲「類未找到」。 問題出現在上下文類中,試圖通過清理並刪除Google中給出的gen文件,但沒有任何結果。請幫我解決這個問題。
logcat的輸出:
11-09 20:30:44.156: W/System.err(2842): java.lang.InstantiationException: com.picsswipe.Share
11-09 20:30:44.156: W/System.err(2842): at java.lang.Class.newInstanceImpl(Native Method)
11-09 20:30:44.156: W/System.err(2842): at java.lang.Class.newInstance(Class.java:1409)
11-09 20:30:44.156: W/System.err(2842): at org.apache.cordova.api.PluginEntry.createPlugin(PluginEntry.java:80)
11-09 20:30:44.164: W/System.err(2842): at org.apache.cordova.api.PluginManager.getPlugin(PluginManager.java:249)
11-09 20:30:44.164: W/System.err(2842): at org.apache.cordova.api.PluginManager.exec(PluginManager.java:206)
11-09 20:30:44.164: W/System.err(2842): at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:51)
11-09 20:30:44.164: W/System.err(2842): at android.webkit.WebViewCore.nativeHandleTouchEvent(Native Method)
11-09 20:30:44.164: W/System.err(2842): at android.webkit.WebViewCore.nativeHandleTouchEvent(Native Method)
11-09 20:30:44.164: W/System.err(2842): at android.webkit.WebViewCore.access$6200(WebViewCore.java:54)
11-09 20:30:44.164: W/System.err(2842): at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1658)
11-09 20:30:44.164: W/System.err(2842): at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 20:30:44.164: W/System.err(2842): at android.os.Looper.loop(Looper.java:130)
11-09 20:30:44.164: W/System.err(2842): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:685)
11-09 20:30:44.164: W/System.err(2842): at java.lang.Thread.run(Thread.java:1019)
share.js
插件:
var Share = function() {};
Share.prototype.show = function(success, fail, path) {
return cordova.exec(function(args) {
success(args);
}, function(args) {
fail(args);
}, 'Share', 'ShareImage', [{"image": path}]);
};
if(!window.plugins) {
window.plugins = {};
}
if (!window.plugins.share) {
window.plugins.share = new Share();
}
3210:
<feature name="Share">
<param name="android-package" value="com.picsswipe.Share"/>
</feature>
您是否在xml文件夾中由phonegap插件生成的xml中定義了插件類名稱。 –
是的,我已經定義了config.xml文件@ nikhil.thakkar –
你可以粘貼你的完整的類文件和config.xml嗎? –