簡體   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