Abrir una actividad de un CordovaPlugin
He escrito una clase CordavaPlugin derivada.
public class ShowMap extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.compareTo("showMap") == 0) { String message = args.getString(0); this.echo(message, callbackContext); Intent i = new Intent(); 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."); } } }
Quiero que esta clase abra una nueva actividad. ¿Cómo obtengo acceso al contexto original de la clase basada en el teléfono?
- Cómo abrir la configuración de la ubicación de Android mediante el separador de teléfono
- Cordova CLI Phone Gap Aplicación navigator.app.exit Función no funciona
- Instalación de Phonegap / Cordova 3.1 plugins (código de barras)
- Cómo seleccionar el video de la galería en el teléfono?
- PhoneGap plugin: la forma más rápida de transferir datos JSON a nativo
- Plugin de servicio de fondo de Android en el teléfono
- Obtener la fuerza de la conexión en Phonegap
- Facebook Login en PhoneGap, no pasa nada
- La compilación de Cordova devuelve el plugin.xml que falta
- gap_init llamado de origen restringido
- Uso de Phonegap para enviar SMS y mostrar en Bandeja de entrada
- Cómo utilizar Phonegap Android Plugin de notificación local
- Ampliación de plugins cordova existentes / módulos phonegap
Prueba como
Context context=this.cordova.getActivity().getApplicationContext(); //or Context context=cordova.getActivity().getApplicationContext(); Intent intent=new Intent(context,Next_Activity.class); context.startActivity(intent); //or cordova.getActivity().startActivity(intent);
Y asegúrate de haber registrado Next Activity en AndroidManifest.xml
- Registre su actividad en el archivo AndroidManifest
- En su plugin usted debe tener el código como este, no observe "callback.success ()" se llama
- Ejecute la acción en hilo ui y no hilo de fondo.
-
disfrutar
if (action.equals("myaction")) { cordova.getActivity().runOnUiThread(new Runnable() { @Override public void run() { Context context = cordova.getActivity() .getApplicationContext(); Intent intent = new Intent(context, MyNewActivityGap.class); cordova.getActivity().startActivity(intent); } }); return true; }
Context context = cordova.getActivity().getApplicationContext(); Intent intent = new Intent(context,Next_Activity.class); cordova.startActivityForResult(this, intent,0);
Utilicé intención implícita para que esta funcionalidad funcionara
Intent i = new Intent("ACTION_PLAY_VIDEO"); this.cordova.startActivityForResult((CordovaPlugin) this,i, 0);
No olvide poner filtro de intención en su actividad de destino en archivo de manifiesto
<activity android:name="VideoPlayerActivity" > <intent-filter> <action android:name="ACTION_PLAY_VIDEO" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
Publica ahora en 2017, porque es el mejor resultado de búsqueda de Google para "cordova plugin activity" y la respuesta mejor votada, junto con la guía de Cordova plugin están faltando la siguiente información crítica, que me llevó muchas horas para averiguar … El padre attrib de config-file y el código específico:
Añadido a plugin.xml, personalizado de acuerdo a sus necesidades:
<!-- separate config-file here targeting AndroidManifest with parent NOT equal to /* --> <config-file target="AndroidManifest.xml" parent="/manifest/application"> <activity android:name=com.custompackage.MyCustomActivity"> </activity> </config-file>
Actualización del código de lanzamiento con el paquete y la actividad anteriores:
Context context=this.cordova.getActivity().getApplicationContext(); //or Context context=cordova.getActivity().getApplicationContext(); Intent intent=new Intent(context, com.custompackage.MyCustomActivity.class); context.startActivity(intent); //or cordova.getActivity().startActivity(intent);
Vea este ejemplo.
En primer lugar, debe declarar su complemento personalizado en config.xml. Puede encontrar este archivo en la carpeta res> xml.
<feature name="CustomPlugin"> <param name="android-package" value="com.Phonegap.CustomPlugin" /> </feature>
A continuación, debe implementar el complemento mediante el uso de código Java
public class CustomPlugin extends CordovaPlugin { @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals("sayHello")){ try { String responseText = "Hello world, " + args.getString(0); callbackContext.success(responseText); } catch (JSONException e){ callbackContext.error("Failed to parse parameters"); } return true; } return false; } }
Finalmente llamamos a un complemento desde javascript
function initial(){ var name = $("#NameInput").val(); cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]); } function sayHelloSuccess(data){ alert("OK: " + data); } function sayHelloFailure(data){ alert("FAIL: " + data); }
- Pase las cookies de HttpURLConnection (java.net.CookieManager) a WebView (android.webkit.CookieManager)
- AndroidHttpClient no encontrado (al ejecutar Robolectric)