web-dev-qa-db-ja.com

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.");
    }
}

}

このクラスから新しいアクティビティを開きたいです。 phonegapベースのクラスの元のコンテキストにアクセスするにはどうすればよいですか?

29
krasnoff

として試してください:

    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に次のアクティビティが登録されていることを確認してください

42
  1. AndroidManifestファイルにアクティビティを登録します
  2. プラグインでは、このようなコードが必要です。「callback.success()」が呼び出されないことに注意してください
  3. バックグラウンドスレッドではなく、UIスレッドでアクションを実行します。
  4. 楽しい

    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;
    }
    
16
P.Ranjan
Context context =  cordova.getActivity().getApplicationContext();
Intent intent = new Intent(context,Next_Activity.class);

cordova.startActivityForResult(this, intent,0);
5
zainoz.zaini

「cordovaプラグインアクティビティ」の上位ランクのGoogle検索結果であり、上位投票の回答であるCordovaプラグインガイドとともに次の重要な情報が欠落しているため、2017年に今すぐ投稿してください。 config-fileの親属性と特定のコード:

必要に応じてカスタマイズされた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);
1
Tom Pace

暗黙的な意図を使用してこの機能を動作させます

  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>
1
Megha Rathore