繁体   English   中英

在Android应用程序中导入Java项目?

[英]Import Java Project in Android application?

即使在普通的android项目中无法识别java项目中的某些类,我是否可以在Android项目中使用Java项目? 例如javax.xml包?

我认为有两种可能性:

  1. 用java项目创建一个jar并在android中导入它
  2. 或者在android中引用该项目(因为我知道它是可能的)。

但无论哪种方式,在我的Android应用程序中,那些在java中但在android中找不到的类是否可以正常? 这会有用吗? 谢谢。 从我的Android应用程序的构建路径打印屏幕

从我的Android应用程序的构建路径打印屏幕

我创建了JavaProject,然后将其作为参考导入到我的Android项目中。 我得到了一个我没想到的错误,它无法识别我的Java项目中的.classes。

如果您正在使用Eclipse(使用ADT插件),则可以在Android项目的构建路径中引用Java项目。 这会将这些类打包在.apk输出中,并允许您在应用中使用它们。

正如你在评论中指出的那样; 将Java项目作为Android库引用将不适用于您的情况,因为javax。*包的存在将导致Eclipse中的编译时错误。 在这种情况下,您需要选择选项1并从Java项目构建一个Jar文件,并按照此处的说明包含它。 这样, 除非您尝试使用它们,否则需要javax。*的类文件不应产生任何编译/运行时错误。 无论哪种方式,使用Java构建路径将无法正常工作 - 类文件不会以这种方式捆绑。

Android平台提供了一些javax.xml ,但不是整个包(请阅读本文档以获取更多详细信息)。 通常最简单的解决方案是编写一个Android等效的受影响的Java代码,不需要缺少依赖项,并桥接 2个实现,以便为每个项目使用正确的实现。

它终于奏效了,我最大的问题是我传递给HttpPost的网址和SAP的ksoap2根本不适用于我。

private void testCallingService() {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getCredentialsProvider().setCredentials(
            new AuthScope("ip here", port here),
            new UsernamePasswordCredentials(username, password));

    try {
        String buffer = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='namespace'><soapenv:Header/><soapenv:Body><urn:methodname><USERNAME>test</USERNAME></urn:methodname></soapenv:Body></soapenv:Envelope>";
        HttpPost httppost = new HttpPost(url);

        StringEntity se = new StringEntity(buffer, HTTP.UTF_8);
        se.setContentType("text/xml");
        httppost.setHeader("Content-Type",
                "application/soap+xml;charset=UTF-8");
        httppost.setEntity(se);

        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(new AuthScope("ip", port),
                new UsernamePasswordCredentials(username, password));
        httpclient.setCredentialsProvider(credsProvider);

        BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient
                .execute(httppost);
        if (httpResponse.getStatusLine() != null) {
            System.out.println("Http status: "
                    + httpResponse.getStatusLine());
        }

        RequestLine requestLine = httppost.getRequestLine();

        String response = getResponseBody(httpResponse); // read server response. response.getEntity().getContent();...
        System.out.println("response: " + response);
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
    httpclient.getConnectionManager().shutdown();
}

所以,我自己构建了SOAP信封,将在最近的将来尝试停止这样做。 制作CredentialsProvider的实例并设置我的用户/通行证详细信息。 服务器的状态是200,我收到了我需要的信息。 一个问题仍然是响应显然太大(并且它不会在此停止)所以我的响应被截断了。 现在努力解决这个问题。 我真的希望这有助于某人。

暂无
暂无

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

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