在使用MethodChannel的时候也需要分几种情形,不同情形处理的细节不太一样。
第一种情形,假设先启动一个普通的MainActivity,然后再点击按钮,启动一个默认FlutterActivity的
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;
import io.flutter.embedding.engine.dart.DartExecutor;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.view.FlutterMain;
public class MainActivity extends AppCompatActivity {
private static final String CHANNEL_NATIVE = "com.example.flutter/native";
private static final String CHANNEL_FLUTTER = "com.example.flutter/flutter";
@Override
protected void onCreate(Bundle savedInstanceState) {
FlutterMain.startInitialization(getApplicationContext());
prepareFlutterEngine();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_native);
Button btnOpen = findViewById(R.id.button001);
btnOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(
// FlutterActivity.createDefaultIntent(this)
FirstFlutterActivity
.withCachedEngine("my_engine_id")
.build(MainActivity.this)
);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
TextView textView = findViewById(R.id.textView001);
textView.setText(data.getStringExtra("message"));
}
}
void