2014-07-11 1 views
2

나는 다음 단계는 안드로이드 웹보기에서 코르도바를 구현하기위한 올바른 경우 누군가가 나에게하는 단 몇 분을 필요로안드로이드 webview에서 phonegap/cordova를 구현하는 방법은 무엇입니까?</p> <p>편집 :

1) : 좋아, 나는 마침내이 오른쪽 단계는 작업을 얻었다 나는 프로젝트 생성 : cordova create hello com.example.hello HelloWorld을하고 폴더를 입력

2) cordova platform add android, cordova run android (cordova.jar이 생성) => 응용 프로그램이 => 장치 출시 나는 cordova_layout.xml을 만들 수)

3

주심의 준비가되어 "/ res/layout"에서 다음 코드를 사용합니다 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<org.apache.cordova.CordovaWebView 
android:id="@+id/cordova_web_view" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_weight="1" /> 


</LinearLayout> 

4) 일식에서 "기존 프로젝트"로 (프로젝트 가져 오기) 수입 후 주요 자바 파일에 추가 :

public class HelloWorld extends Activity implements CordovaInterface { 


private CordovaWebView cordova_webview; 
private String TAG = "CORDOVA_ACTIVITY"; 
private final ExecutorService threadPool = Executors.newCachedThreadPool(); 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.cordova_layout); 
    cordova_webview = (CordovaWebView) findViewById(R.id.cordova_web_view); 
    // Config.init(this); 
    String url = "file:///android_asset/www/index.html"; 
    cordova_webview.loadUrl(url, 10000); 
} 


    @Override 
    protected void onPause() { 
     super.onPause(); 
     Log.d(TAG, "onPause"); 
    } 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     Log.d(TAG, "onResume"); 
    } 


    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     if (this.cordova_webview != null) { 
      this.cordova_webview 
        .loadUrl("javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};"); 
      this.cordova_webview.loadUrl("about:blank"); 
      cordova_webview.handleDestroy(); 
     } 
    } 



    @Override 
    public Activity getActivity() { 
     return this; 
    } 


    @Override 
    public ExecutorService getThreadPool() { 
     return threadPool; 
    } 


    @Override 
    public Object onMessage(String message, Object obj) { 
     Log.d(TAG, message); 
     if (message.equalsIgnoreCase("exit")) { 
      super.finish(); 
     } 
     return null; 
    } 


    @Override 
    public void setActivityResultCallback(CordovaPlugin cordovaPlugin) { 
     Log.d(TAG, "setActivityResultCallback is unimplemented"); 
    } 


    @Override 
    public void startActivityForResult(CordovaPlugin cordovaPlugin, 
      Intent intent, int resultCode) { 
     Log.d(TAG, "startActivityForResult is unimplemented"); 
    } 
} 

가 참고 : 활동 이름이 매니페스트에서 하나와 일치해야합니다 .xml

희망이 있으면 도움이 될 것입니다. 좋은 하루 되세요!

+0

어디에서 "개인 최종 ExecutorService threadPool = Executors.newCachedThreadPool()"입니까? – Regent

+0

phonegap 페이지에있는 코드 만 추가하면 @Regent가됩니다. : : @override public ExecutorService getThreadPool() { return threadPool; } 그것은 나에게 오류를 준다. 나는이 코드를 추가해야한다. 그래서이 코드를 추가해야한다. 그렇지 않다면 "return threadpool"이 getthreadpool()과 같은 것으로 transfom 될 것이다. –

+0

logcat 오류를 게시하십시오. –

답변

5

당신은 폰갭 응용 프로그램에 URL을로드하려면 다음 네이티브 안드로이드 응용 프로그램에서 코르도바의 웹보기를 내장하고 URL 사용을로드하기위한 자산

public class MyPhoneGapActivity extends DroidGap { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    super.loadUrl("file:///android_asset/www/index.html", 10000); 
} 

에서 첫 번째 URL을로드하기 위해 다음 코드를 사용할 수있다 아래의 코드

public class CordovaActivity extends Activity implements CordovaInterface { 

      private CordovaWebView cordova_webview; 
      private String TAG = "CORDOVA_ACTIVITY"; 
      private final ExecutorService threadPool = Executors.newCachedThreadPool(); 


      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.cordova_layout); 
       cordova_webview = (CordovaWebView) findViewById(R.id.cordova_web_view); 
       // Config.init(this); 
       String url = "file:///android_asset/www/index.html"; 
       cordova_webview.loadUrl(url, 10000); 
      } 


      @Override 
      protected void onPause() { 
       super.onPause(); 
       Log.d(TAG, "onPause"); 
      } 


      @Override 
      protected void onResume() { 
       super.onResume(); 
       Log.d(TAG, "onResume"); 
      } 


      @Override 
      protected void onDestroy() { 
       super.onDestroy(); 
       if (this.cordova_webview != null) { 
        this.cordova_webview 
          .loadUrl("javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};"); 
        this.cordova_webview.loadUrl("about:blank"); 
        cordova_webview.handleDestroy(); 
       } 
      } 



      @Override 
      public Activity getActivity() { 
       return this; 
      } 


      @Override 
      public ExecutorService getThreadPool() { 
       return threadPool; 
      } 


      @Override 
      public Object onMessage(String message, Object obj) { 
       Log.d(TAG, message); 
       if (message.equalsIgnoreCase("exit")) { 
        super.finish(); 
       } 
       return null; 
      } 


      @Override 
      public void setActivityResultCallback(CordovaPlugin cordovaPlugin) { 
       Log.d(TAG, "setActivityResultCallback is unimplemented"); 
      } 


      @Override 
      public void startActivityForResult(CordovaPlugin cordovaPlugin, 
        Intent intent, int resultCode) { 
       Log.d(TAG, "startActivityForResult is unimplemented"); 
      } 
} 
+0

위의 코드는 안드로이드 응용 프로그램을 충돌시킵니다. 이후 webview의 stopLoading() 메소드가 호출되고 "viewClient"는 항상 null입니다. 이 문제를 어떻게 해결할 수 있습니까? xml 레이아웃 대신 코드에서 시도했습니다. – Karthick

관련 문제