カスタム Native Android コード

多くのアプリは、適切にCapacitorプラグインを構築して公開するというオーバーヘッドなしに、ネイティブ機能を実装するためのカスタムJavaコードを追加したいと思うでしょう。

WebViewからそのコードにアクセスする必要があるかどうかによって、2つの方法があります:

WebViewからNativeコードにアクセス

WebViewでアクセス可能にする必要があるカスタムNativeコードを構築する最も簡単な方法は、 そのためのローカルCapacitorプラグインを構築することです。この場合、プラグインの構築は com.getcapacitor.Plugin を継承するクラスの構築と同じくらい簡単です。 プラグインは @NativePlugin()@PluginMethod() のアノテーションを使用します。

Here is a simple example:

com/example/myapp/CustomNativePlugin.java in android/app/src/main/java:

package com.example.myapp;

import com.getcapacitor.NativePlugin;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;

@NativePlugin()
public class CustomNativePlugin extends Plugin {

  @PluginMethod()
  public void customCall(PluginCall call) {
    String message = call.getString("message");
    // More code here...
    call.success();
  }

  @PluginMethod()
  public void customFunction(PluginCall call) {
    // More code here...
    call.resolve();
  }
}

最後に、アクティビティにプラグインを登録します。

// Other imports...
import com.example.myapp.CustomNativePlugin;

public class MainActivity extends BridgeActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Initializes the Bridge
    this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
      // Additional plugins you've installed go here
      // Ex: add(TotallyAwesomePlugin.class);
      add(CustomNativePlugin.class);
    }});
  }
}

Then you can use your functions in your webView code:

// Other codes...
import { Plugins } from "@capacitor/core";
const { CustomNativePlugin } = Plugins;
// Other codes...
CustomNativePlugin.customCall({ message: "CUSTOM MESSAGE" });
CustomNativePlugin.customFunction();
// Other codes...

For more usages of plugin APIs, have a look at Capacitor Android Plugin Guide.

プライベート Native Code

WebViewからコードにアクセスする必要がない場合は、必要な場所にコードを追加するだけです。 Capacitorを使用すると、ネイティブプロジェクトを完全に制御できます。アクティビティに新しいイベントハンドラを追加する必要がありますか? MainActivity を更新して追加するだけです。世界はあなたの思いのままです。

Contributors

BackNext