Cómo llamar a una actividad de Android desde PhoneGap
Soy nuevo en PhoneGap y soy capaz de implementar la aplicación básica con PhoneGap, ahora para mejorar aún más, quiero conectar PhoneGap con Android actividades, básicamente lo que planeo es llamar a startActivity () método utilizando una función javascript.
He intentado la comunicación entre Android Java y Phonegap Javascript?
- Efecto de zoom de Android ImageView
- Phonegap funciones no definidas en Phonegap construir aplicaciones - también pushNotifications no funcionan
- ¿Qué es clobbering window.page en mi Galaxy S3?
- Característica Detecta Autoplay HTML5 Audio - Audio en navegadores móviles
- HTML5 Audio no puede reproducir JavaScript a menos que se active manualmente una vez
Pero no pude llamar a una actividad, causando un error de cierre de la fuerza. ¡Ayúdame, esperando una respuesta!
- Window.open () devuelve undefined cuando se llama desde setTimeout en Android
- ¿Cómo comprobar si google.navigation intent / url scheme es compatible desde dentro de una aplicación web?
- -webkit-tap-highlight-color no se aplica a la etiqueta de área
- ¿Cómo implementar la aplicación de compra mediante Cordova plugin?
- Reproducción de vídeos HTML5 en el navegador - ¿Qué funciona para la mayoría de los dispositivos Android?
- Cómo almacenar datos de json de forma segura en phonegap android?
- ¿Puede un sitio web (HTML5, JavaScript) acceder a la lista de contactos de un dispositivo móvil (Android / iPhone), archivos SDCard
- Android 2.2 Web View Windows se mueve hacia arriba cuando aparece Virtual Keyboard
Se llama a cualquier llamada de código Java Native sin utilizar ningún complemento como sigue.
Siga los siguientes pasos.
-
Reemplace el código siguiente por su actividad DroidGap existente.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); // Calling this is necessary to make this work appView.addJavascriptInterface(this, "MainActivity"); /* "this" points the to the object of the current activity. "MainActivity" is used to refer "this" object in JavaScript as in Step 3. */ super.loadUrl("file:///android_asset/www/index.html"); }
-
Agregue la función personalizada en la actividad actual (esta) como sigue.
public void customFunctionCalled() { Log.e("Custom Function Called", "Custom Function Called"); }
-
Ahora llame a esta función de su código HTML / JavaScript como sigue.
<script type="text/javascript"> function callNewActivity() { window.MainActivity.customFunctionCalled(); } </script>
Esto llamará customFunctionCalled()
en MainActivity
.
Eclipse es una aplicación que permite organizar todo tipo de … Eclipse 3.7.2 Android 2.2 Emulator PhoneGap – 2.0.0
Por favor, envíe sus comentarios aquí para mejorar la publicación de blogs. http://phonegapexplorers.blogspot.in/2012/08/call-native-java-code-phonegap-android.html
Su duro sin saber más acerca de lo que está tratando de hacer exactamente, pero ir por el camino de escribir un complemento es probablemente el camino a seguir. Revisa;
http://smus.com/android-phonegap-plugins
Este complemento podría funcionar para usted tal como está, o darle buenos indicios de cómo hacerlo usted mismo.
Prueba a crear complementos, aquí hay algunos complementos ejemplo https://github.com/phonegap/phonegap-plugins
Intento lo que usted está tratando de hacer antes, con las actualizaciones de phonegap a la versión 2.0.0 y hacia arriba la mejor manera de hacerlo es con el complemento. Esta es la carpeta js en el teléfono en la carpeta de activos. Asegúrese de construir elemento div con id "nativecall" y un botón de muestra para detectarlo. Asegúrese de ver LogCat para comprobar los mensajes de error.
window.echo = function(str, callback) { cordova.exec(callback, function(err) { callback('Nothing to echo.'); }, "Echo", "echo", [str]); }; var app = { // Application Constructor initialize: function() { this.bindEvents(); }, // Bind Event Listeners // // Bind any events that are required on startup. Common events are: // 'load', 'deviceready', 'offline', and 'online'. bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, // deviceready Event Handler // // The scope of 'this' is the event. In order to call the 'receivedEvent' // function, we must explicity call 'app.receivedEvent(...);' onDeviceReady: function() { app.receivedEvent('deviceready'); }, // Update DOM on a Received Event receivedEvent: function() { var abiter = $('#nativecall').html(); $("#abutton").click(function () { window.echo(abiter, function(echoValue) { alert(echoValue = abiter); // should alert true. }); }); } }; app.initialize();
En src agregue un nuevo método de clase con el nombre de servicio "Echo".
package org.apache.cordova.plugin; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.plugin.AndroidActivities; import org.apache.cordova.api.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; /** * This class echoes a string called from JavaScript. */ public class Echo extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("echo")) { String message = args.getString(0); new AndroidPublicFunction(message); //call function from AndroidActivities this.echo(message, callbackContext); return true; } return false; } private void echo(String message, CallbackContext callbackContext) { if (message != null && message.length() > 0) { callbackContext.success(message); } else { callbackContext.error("Expected one non-empty string argument."); } } }
- Lollipop Set Default local no funciona
- ¿Cómo puedo cambiar el color de la fuente de la lista de selección en una ruleta?