Visualizzazioni Web Android
Partire da 1,9 a Cordova, con l'assistenza della CordovaActivity
, è possibile utilizzare Cordova come componente di un'applicazione Android nativa più grande. Android si riferisce a questo componente come il CordovaWebView
. Nuove applicazioni basate su Cordova da 1,9 in poi utilizzano il CordovaWebView
come visualizzazione principale, indipendentemente dal fatto che l'eredità CordovaActivity
approccio viene utilizzato.
Se si ha familiarità con lo sviluppo di applicazioni Android, Android piattaforma guida allo sviluppo di un'applicazione di Cordova prima di tentare di comprendere un WebView. Non è il modo principale per creare applicazioni Android Cordova. Queste istruzioni sono attualmente manuale, ma può essere eventualmente essere automatizzato.
Prerequisiti
Cordova 1,9 o maggiore
Android SDK aggiornato all'ultimo SDK
Guida all'utilizzo di CordovaWebView in un progetto Android
cd
in/framework
ed eseguireant jar
per costruire il barattolo di cordova. Crea il file. jar formato comecordova-x.x.x.jar
nel/framework
directory.Copiare il barattolo di cordova nel vostro progetto Android
/libs
directory.Modifica dell'applicazione
main.xml
file (sotto/res/xml
) per essere simile alla seguente, con lalayout_height
,layout_width
eid
modificato per soddisfare la vostra applicazione:<org.apache.cordova.CordovaWebView android:id="@+id/tutorialView" android:layout_width="match_parent" android:layout_height="match_parent" />
Modificare la vostra attività che implementa il
CordovaInterface
. È necessario implementare i metodi inclusi. Si potrebbe desiderare di copiarli da/framework/src/org/apache/cordova/CordovaActivity.java
, o implementarle sul proprio. Il frammento di codice riportato di seguito viene illustrata un'applicazione di base che utilizza l'interfaccia. Si noti come l'id di riferimento vista corrisponde laid
attributo specificato nel frammento XML sopra indicato:public class CordovaViewTestActivity extends Activity implements CordovaInterface { CordovaWebView cwv; /* Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); cwv = (CordovaWebView) findViewById(R.id.tutorialView); Config.init(this); cwv.loadUrl(Config.getStartUrl()); }
Se si utilizza la fotocamera, è necessario implementare anche questo:
@Override
public void setActivityResultCallback(CordovaPlugin plugin) {
this.activityResultCallback = plugin;
}
/**
* Launch an activity for which you would like a result when it finished. When this activity exits,
* your onActivityResult() method is called.
*
* @param command The command object
* @param intent The intent to start
* @param requestCode The request code that is passed to callback to identify the activity
*/
public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {
this.activityResultCallback = command;
this.activityResultKeepRunning = this.keepRunning;
// If multitasking turned on, then disable it for activities that return results
if (command != null) {
this.keepRunning = false;
}
// Start activity
super.startActivityForResult(intent, requestCode);
}
@Override
/**
* Called when an activity you launched exits, giving you the requestCode you started it with,
* the resultCode it returned, and any additional data from it.
*
* @param requestCode The request code originally supplied to startActivityForResult(),
* allowing you to identify who this result came from.
* @param resultCode The integer result code returned by the child activity through its setResult().
* @param data An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
*/
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
CordovaPlugin callback = this.activityResultCallback;
if (callback != null) {
callback.onActivityResult(requestCode, resultCode, intent);
}
}
Infine, ricordarsi di aggiungere il pool di thread, altrimenti il plugin non hanno nessun thread per eseguire:
@Override
public ExecutorService getThreadPool() {
return threadPool;
}
Copiare i file dell'applicazione HTML e JavaScript del progetto Android
/assets/www
directory.Copia
config.xml
dal/framework/res/xml
al tuo progetto/res/xml
directory.