Android 如何以编程方式从我的颤振应用程序启动应用程序?

Android 如何以编程方式从我的颤振应用程序启动应用程序?,android,ios,flutter,dart,Android,Ios,Flutter,Dart,我知道这里可能有一些重复,但我找到的其他解决方案并不完全符合我的需要。我想做的是启动一个特定的应用程序,如果没有安装,则启动Playstore上的应用程序页面,如果使用iPhone,还可以启动AppStore。我很快就可以让它工作了,但我需要一些帮助来完成这项任务 我有一个FloatingAction按钮,用于加载所选应用程序,如果未安装,则加载PlayStore,但它不会直接进入应用程序的页面。我还没有在iPhone上进行测试,所以如果这些代码是垃圾代码,我也会非常感谢您的帮助 如何让我的应用

我知道这里可能有一些重复,但我找到的其他解决方案并不完全符合我的需要。我想做的是启动一个特定的应用程序,如果没有安装,则启动Playstore上的应用程序页面,如果使用iPhone,还可以启动AppStore。我很快就可以让它工作了,但我需要一些帮助来完成这项任务

我有一个FloatingAction按钮,用于加载所选应用程序,如果未安装,则加载PlayStore,但它不会直接进入应用程序的页面。我还没有在iPhone上进行测试,所以如果这些代码是垃圾代码,我也会非常感谢您的帮助

如何让我的应用程序直接进入playstore应用程序和appstore应用程序的应用程序页面

这是我的密码

import 'package:flutter/material.dart';
import 'dart:io';
import 'package:flutter_appavailability/flutter_appavailability.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('App Availability'),
        ),
        body: FloatingActionButton(
          backgroundColor: Colors.indigo,
          onPressed: () => openApp(context),
          child: Icon(Icons.open_in_new),
          heroTag: "Open App",
        ),
      ),
    );
  }
}

void openApp(BuildContext context) {
  try {
    AppAvailability.launchApp(Platform.isIOS 
      ? "appname://" 
      : "com.company.appname"
    ).then((_) {
      print("App Launched!");
    }).catchError((err) {
      AppAvailability.launchApp(Platform.isIOS 
        ? "appstore://" 
        : "com.android.vending"
      ) 
// I think I will need to add package name to the playstore package name
// in the line above, but not sure how.
// I have tried com.android.vending?id=com.criticalarc.safezoneapp
// and com.android.vending/com.criticalarc.safezoneapp

      .then((_) {});
      print(err);
    });
  } catch (e) {
    Scaffold.of(context).showSnackBar(
      SnackBar(
        content: Text("App Not Installed!"),
      ),
    );
    print("App Not Installed!");
  }
}
导入“包装:颤振/材料.省道”;
导入“dart:io”;
进口“包装:flutter_appavailability/flutter_appavailability.dart”;
void main()=>runApp(新的MyApp());
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
@凌驾
void initState(){
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:常量文本(“应用程序可用性”),
),
主体:浮动操作按钮(
背景颜色:Colors.indigo,
onPressed:()=>openApp(上下文),
子:图标(图标。在新中打开),
heroTag:“打开应用程序”,
),
),
);
}
}
void openApp(BuildContext){
试一试{
AppAvailability.launchApp(Platform.isIOS
?“appname://”
:“com.company.appname”
).然后(){
打印(“应用程序启动!”);
}).catchError((err){
AppAvailability.launchApp(Platform.isIOS
?“应用商店:/”
:“com.android.vending”
) 
//我想我需要将包名添加到playstore包名中
//在上面的行中,但不确定如何。
//我试过com.android.vending?id=com.criticalarc.safezoneapp
//和com.android.vending/com.criticalarc.safezoneapp
.然后(({});
打印(错误);
});
}捕获(e){
Scaffold.of(上下文).showSnackBar(
小吃条(
内容:文本(“应用程序未安装!”),
),
);
打印(“应用程序未安装!”);
}
}

谢谢

尝试使用Google Play网站链接本身

语法-


例如-

您是否使用try-catch先加载iOS应用商店,如果加载失败,请访问play应用商店?如果平台是iOS,则启动iOS版本的应用程序,否则启动android版本。如果没有安装,则启动相关的应用商店(苹果或谷歌)。我本来打算使用url_launcher加载网站链接作为备用选项,但如果可能,我希望使用这些应用。感谢这些链接起作用了,我知道它们会起作用,但通过这种方法,打开本机应用程序将取决于用户是否已将设备设置为在安装时执行此操作。目前,这是公认的答案。谢谢