我试图通过包名打开另一个Flutter应用程序,而不是进行深度链接,只是简单地打开已经安装在设备上的应用程序。同时还想分享一些数据并在Flutter应用程序中接收它们。
我的第一个(本地)应用程序调用了我的Flutter应用程序,并传递了一些文本数据:
我正在使用 method-channel 进行操作。
现在Activity类是这样的:-
请告诉我我在这里犯了什么错误,因为每次都会得到空的包裹。
我的第一个(本地)应用程序调用了我的Flutter应用程序,并传递了一些文本数据:
var intent = context.packageManager.getLaunchIntentForPackage(packageName)
if (intent == null) {
intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse("market://details?id=$packageName")
val bundle = Bundle()
bundle.putString("user_id", "1111")
intent.putExtra("data", bundle)
intent.setType("text/plain")
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
我正在使用 method-channel 进行操作。
class _MyHomePageState extends State<MyHomePage> {
static const methodChannel = MethodChannel("samples.flutter.dev/battery");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
children: <Widget>[
ElevatedButton(
onPressed: () async {
openApp();
},
child: Text("Please work this time"))
],
),
),
);
}
static Future<bool?> openApp() async {
return await methodChannel.invokeMethod<bool>("getOpenApp");
}
}
现在Activity类是这样的:-
class MainActivity : FlutterActivity() {
//private var sharedText: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val intent = intent
val action = intent.action
val type = intent.type
if (Intent.ACTION_SEND == action && type != null) {
if ("text/plain" == type) {
// handleSendText(intent) // Handle text being sent
}
}
}
private val CHANNEL = "samples.flutter.dev/battery"
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
if (call.method.contentEquals("getOpenApp")) {
var userId = "No data received"
val bundle: Bundle? = intent.getBundleExtra("data");
//val bundle = intent.getBundleExtra("data");
if (bundle!=null){
userId = bundle.getString("user_id").toString()
Log.d("userid","is equals to: $userId")
System.out.print("userid ki value : $userId")
}else{
Log.d("empty","is equals to: empty hai ")
}
result.success(200)
//sharedText = null
}
}
}
请告诉我我在这里犯了什么错误,因为每次都会得到空的包裹。