2013-11-09 43 views
0

我已經編寫了用於從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> 
+0

您是否在xml文件夾中由phonegap插件生成的xml中定義了插件類名稱。 –

+0

是的,我已經定義了config.xml文件@ nikhil.thakkar –

+0

你可以粘貼你的完整的類文件和config.xml嗎? –

回答

0
<?xml version="1.0" encoding="utf-8"?> 
<!-- 
     Licensed to the Apache Software Foundation (ASF) under one 
     or more contributor license agreements. See the NOTICE file 
     distributed with this work for additional information 
     regarding copyright ownership. The ASF licenses this file 
     to you under the Apache License, Version 2.0 (the 
     "License"); you may not use this file except in compliance 
     with the License. You may obtain a copy of the License at 

     http://www.apache.org/licenses/LICENSE-2.0 

     Unless required by applicable law or agreed to in writing, 
     software distributed under the License is distributed on an 
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
     KIND, either express or implied. See the License for the 
     specific language governing permissions and limitations 
     under the License. 
--> 
<cordova> 
    <!-- 
    access elements control the Android whitelist. 
    Domains are assumed blocked unless set otherwise 
    --> 

    <access origin="http://127.0.0.1*"/> <!-- allow local pages --> 

    <!-- <access origin="https://example.com" /> allow any secure requests to example.com --> 
    <!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www --> 
    <access origin=".*"/> 

    <!-- <content src="http://mysite.com/myapp.html" /> for external pages --> 
    <content src="home.html" /> 

    <log level="DEBUG"/> 
    <preference name="useBrowserHistory" value="true" /> 
    <preference name="exit-on-suspend" value="false" /> 
<plugins> 
    <plugin name="App" value="org.apache.cordova.App"/> 
    <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/> 
    <plugin name="Device" value="org.apache.cordova.Device"/> 
    <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/> 
    <plugin name="Compass" value="org.apache.cordova.CompassListener"/> 
    <plugin name="Media" value="org.apache.cordova.AudioHandler"/> 
    <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/> 
    <plugin name="Contacts" value="org.apache.cordova.ContactManager"/> 
    <plugin name="File" value="org.apache.cordova.FileUtils"/> 
    <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/> 
    <plugin name="Notification" value="org.apache.cordova.Notification"/> 
    <plugin name="Storage" value="org.apache.cordova.Storage"/> 
    <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/> 
    <plugin name="Capture" value="org.apache.cordova.Capture"/> 
    <plugin name="Battery" value="org.apache.cordova.BatteryListener"/> 
    <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/> 
    <plugin name="Echo" value="org.apache.cordova.Echo" /> 
    <plugin name="Globalization" value="org.apache.cordova.Globalization"/> 
    <plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser"/> 
    <plugin name="SQLitePlugin" value="com.phonegap.plugin.sqlitePlugin.SQLitePlugin"/> 
    <plugin name="Sync" value="com.phonegap.plugin.syncPlugin.SyncDB" /> 
</plugins> 
</cordova> 

這是默認config.xml中,我有。 您需要在value屬性中指定插件名稱和類名稱,如上面的xml中所示。

請參考以下鏈接http://docs.phonegap.com/en/2.7.0/guide_plugin-development_index.md.html

在幫助讓我知道情況。

+0

因此,您的將是

+0

是的,即使我宣佈它只是這樣... ... –

相關問題