Проверьте, установлено ли конкретное приложение или нет.

#flutter #flutter-dependencies #installed-applications

Вопрос:

Я хочу реализовать в своем существующем приложении условия, при которых определенное приложение установлено или нет.

Условия:

the first app is that which is I'm going to build

Second app that is required for run first app

  1. Если приложение установлено (второе приложение), запустите HomePage() его в первом приложении
  2. Если приложение не установлено, отобразите всплывающее окно или предупреждение об установке приложения.

Корневой код первого приложения

 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,
              builder: (context, AsyncSnapshot<ConnectivityResult> snapshot) {
                return snapshot.data == ConnectivityResult.mobile ||
                        snapshot.data == ConnectivityResult.wifi
                    ? MaterialApp(
                        title: 'mFollower',
                        theme: ThemeData(
                          primarySwatch: Colors.blue,
                        ),
                        home: Homepage(),
                        debugShowCheckedModeBanner: false,
                      )
                    : NoInternet();
              },
            );
          }

        });
  }
}
 

Ответ №1:

Это может быть достигнуто с помощью пакета 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 amp;amp; snapshot.data) {
            // App is installed
            return Container(
              color: Colors.green,
            );
          } else {
            // App is not installed
            return Container(color: Colors.redAccent);
          }
        })
 

К сожалению, этот плагин поддерживается только для ANDROID

Комментарии:

1. спасибо за ваш ответ, но, возможно, вы не совсем понимаете, что я собираюсь сказать.

2.Давайте разберемся на примере реальной жизни: на моем телефоне есть два приложения, т. е. First App и Second App . Second App уже разработан и опубликован. First app в стадии разработки. Если Second App он установлен на моем мобильном телефоне, откройте First App HomePage() состояние, в противном случае перенаправьте его в другое состояние, например noInstalled State() . Я поделился корневым кодом First App в нем условия, уже примененного для проверки подключения к Интернету

3. ОК. Таким образом, вы пытаетесь открыть First app файл, если он установлен на устройстве, когда пользователь пытается открыть Second app файл, который уже установлен. Пользователь -> Открывает второе приложение ->> Если установлено первое приложение, откройте его или скажите какую-нибудь ошибку ?

4. Да, именно так. Как я могу реализовать в существующем коде, которые указаны выше

5. Вам нужно реализовать вышеуказанную логику во втором приложении.