简体   繁体   English

适用于Android应用的Java代码中的实例化异常

[英]Instantiation exception in Java code for Android app

I have written the code for fetching current page from the carrousel slider Image in HTML and share it via email and MMS using Java in Android for phonegap project. 我已经编写了用于从HTML的carrousel滑块图像中获取当前页面的代码,并使用Android for phonegap项目中的Java通过电子邮件和MMS共享了该代码。

This is my Java code: 这是我的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;
}

} }

Everything goes fine, but when I clicked the "share" button I get the exception as "Class not found". 一切正常,但是当我单击“共享”按钮时,出现“找不到类”的异常。 The issue is in context class, tried by cleaning and deleted the gen file as given in the Google, but nothing worked out. 问题是在上下文类中,通过清理尝试并删除了Google提供的gen文件,但没有解决。 Please help me to fix this. 请帮助我解决此问题。

Logcat output: 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 plugin: 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();
}

config.xml : config.xml

 <feature name="Share">
  <param name="android-package" value="com.picsswipe.Share"/>
  </feature>
<?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>

This is the default config.xml which I have. 这是我拥有的默认config.xml。 You need to specify the plugin name and the class name in the value attribute as is shown in the above xml. 您需要在value属性中指定插件名称和类名称,如上面的xml所示。

Kindly refer to the following link http://docs.phonegap.com/en/2.7.0/guide_plugin-development_index.md.html 请参考以下链接http://docs.phonegap.com/en/2.7.0/guide_plugin-development_index.md.html

In case of help let me know. 如果需要帮助,请告诉我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM