如何解决检查是否安装了特定的应用程序
我想在现有应用中实现特定应用是否安装的条件。
条件:
the first app is that which is I'm going to build
Second app that is required for run first app
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Future.delayed(Duration(seconds: 2)),builder: (context,AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return MaterialApp(
home: Splash(),debugShowCheckedModeBanner: false,);
} else {
return StreamBuilder(
stream: Connectivity().onConnectivityChanged,AsyncSnapshot<ConnectivityResult> snapshot) {
return snapshot.data == ConnectivityResult.mobile ||
snapshot.data == ConnectivityResult.wifi
? MaterialApp(
title: 'mFollower',theme: ThemeData(
primarySwatch: Colors.blue,),home: Homepage(),)
: NoInternet();
},);
}
});
}
}
解决方法
这可以使用包 device_apps 包来实现。这将返回 Android 设备中安装的应用列表。
// All the apps installed in the device
List<Application> apps = await DeviceApps.getInstalledApplications();
因此,根据您的要求,您可以执行以下操作
Future<bool> isAppInstalled() {
return DeviceApps.getInstalledApplications().then((value) =>
value.any((element) => element.packageName == 'com.example.app')); // Your app package id to check.
}
在 build
方法中使用 Future builder 来获取结果。
FutureBuilder<bool>(
future: apps(),builder: (BuildContext context,AsyncSnapshot<bool> snapshot) {
if (snapshot.hasData && snapshot.data) {
// App is installed
return Container(
color: Colors.green,);
} else {
// App is not installed
return Container(color: Colors.redAccent);
}
})
很遗憾,此插件仅支持 ANDROID
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。