J'ai écrit une classe dérivée CordavaPlugin.
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.");
}
}
}
Je souhaite que cette classe ouvre une nouvelle activité ... Comment puis-je accéder au contexte original de la classe basée sur l’écart téléphonique?
essayez comme:
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);
et assurez-vous d'avoir enregistré l'activité suivante dans AndroidManifest.xml
prendre plaisir
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);
Postez maintenant en 2017, car c'est le résultat de recherche Google le mieux classé pour "l'activité du plug-in cordova", la réponse la plus votée, ainsi que le guide du plug-in Cordova manquent les informations essentielles suivantes, qui m'ont pris de nombreuses heures à comprendre ... l'attribut parent de config-file et le code spécifique:
Ajouté à plugin.xml, personnalisé en fonction de vos besoins:
<!-- 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>
Mise à jour du code de lancement avec le paquet et l'activité ci-dessus:
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);
J'ai utilisé l'intention implicite pour que cette fonctionnalité fonctionne
Intent i = new Intent("ACTION_PLAY_VIDEO");
this.cordova.startActivityForResult((CordovaPlugin) this,i, 0);
n'oubliez pas de mettre le filtre d'intention dans votre activité cible dans le fichier manifeste
<activity Android:name="VideoPlayerActivity" >
<intent-filter>
<action Android:name="ACTION_PLAY_VIDEO" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>