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?

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

  1. Registre su actividad en el archivo AndroidManifest
  2. En su plugin usted debe tener el código como este, no observe "callback.success ()" se llama
  3. Ejecute la acción en hilo ui y no hilo de fondo.
  4. 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); } 
  • Cómo establecer la posición de spinner con cordova
  • Error: ENOENT, ningún archivo o directorio de este tipo - PhoneGap
  • ¿Podemos usar una base de datos SQLITE aldready preparada para una aplicación phonegap?
  • Error en la aplicación Phonegap: módulo no capturado cordova / plugin_list ya definido
  • Cordova 3.4.0 navigator.camera.getPicture no callback onSuccess o onFail para Android 4.3
  • Cordova default config.xml URI no está registrado
  • Deshabilitar los botones de zoom en el inappbrowser de Phonegap
  • Cordova / PhoneGap Plugin Desarrollo de flujo de trabajo para Android
  • Añadiendo un recurso extraíble usando Cordova
  • Phonegap: Clasificación de la lista de contactos
  • Cordova error (ERROR construyendo una de las plataformas)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.