Открыть мероприятие от CordovaPlugin
Я написал производный класс 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.");
}
}
}
Я хочу, чтобы этот класс открыл новый класс.
Как получить доступ к исходному контексту класса, основанного на телефоне?
Ответы
Ответ 1
попробуйте как:
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);
и убедитесь, что вы зарегистрировали следующую активность в AndroidManifest.xml
Ответ 2
- Зарегистрируйте свою активность в файле AndroidManifest
- В вашем плагине вы должны иметь такой код, не заметите, что "callback.success()" называется
- Запустите действие в потоке ui, а не в фоновом потоке.
-
наслаждайтесь
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;
}
Ответ 3
Context context = cordova.getActivity().getApplicationContext();
Intent intent = new Intent(context,Next_Activity.class);
cordova.startActivityForResult(this, intent,0);
Ответ 4
Я использовал неявное намерение, чтобы эта функциональность работала
Intent i = new Intent("ACTION_PLAY_VIDEO");
this.cordova.startActivityForResult((CordovaPlugin) this,i, 0);
не забудьте указать фильтр цели в вашей целевой активности в файле манифеста
<activity android:name="VideoPlayerActivity" >
<intent-filter>
<action android:name="ACTION_PLAY_VIDEO" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Ответ 5
Опубликуйте сейчас в 2017 году, потому что это результат поиска google для топ-рейтинга для "активности плагинов cordova" и ответ с высоким голосованием, а также руководство для плагинов Cordova не имеют следующей важной информации, и мне потребовалось много часов, чтобы выяснить... родительский атрибут config файла и конкретного кода:
Добавлен в plugin.xml, настроенный в соответствии с вашими потребностями:
<!-- 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>
Обновление кода запуска с помощью вышеуказанного пакета и активности:
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);
Ответ 6
См. этот пример.
Во-первых, вам нужно объявить свой пользовательский плагин в файле config.xml. Вы можете найти этот файл в папке res > xml.
<feature name="CustomPlugin">
<param name="android-package" value="com.Phonegap.CustomPlugin" />
</feature>
Затем вам нужно реализовать плагин с помощью 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;
}
}
Наконец, мы вызываем плагин из 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);
}