application_management 0.0.1

  • Readme
  • Changelog
  • Example
  • Installing
  • 58

Application Management #

Pub Package Support Platforms Flutter Sample Star on GitHub

Supports the operation of native applications in the form of plugins.

Features now supported #

API NameDescriptionAndroidIosNote
openAppOpen app with special key.
openInAppStoreOpen the details page for the app in the Apple App Store] or Android Market.
openInSpecifyAppStoreOpen the details page for the app in the specify Android Market.
getInstalledPackageNameListFor Android can get current device installed all app list.
isInstalledCheck the current device whether installed special app.
isInstalledMapCan use this method if you want to check if multiple apps are installed at once.

Installing #

How to use this library.

1. Depend it #

Add this to your package's pubspec.yaml file:

// by git
dependencies:
  application_management:
    git: git@github.com:Nomeleel/application_management.git

-----------------------------------------------------------------

// by pub.dev/packages
dependencies:
  application_management: ^0.0.1

2. Load it #

After the first step is saved, the library will be obtained automatically, or you can try to obtain it manually.

with Flutter:

flutter pub get

3. Import it #

Now in your Dart code, you can use:

import 'package:application_management/application_management.dart';

4. Use it #

RaisedButton(
    child: Text('Open'),
    onPressed: () {
        // for android.
        openApp("com.tencent.mobileqq");
        // for ios.
        openApp("mqq://");
    }
}

Note #

In the course of use, because of platform limitations, we must do some other operations. For example: permission request.

For ios #

Most of the APIs currently supported in iOS depend on the Url Scheme. To actually use it, you must configure it in the project.

How to use url scheme

  1. Open the following path in the project:
project_name\ios\Runner\Info.plist
  1. Add url scheme list to this file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <!-- add here -->
        <key>LSApplicationQueriesSchemes</key>
        <array>
            <!-- You can add up to 50 here. -->
            <string>weixin</string>
            <string>tenvideo</string>
            <string>qqmusic</string>
        </array>
        <!-- end -->
    </dict>
</plist>
  1. Add ': //' suffix when using.
// only for ios.
openApp("weixin://");
isInstalled("tenvideo://");

0.0.1 #

  • The first release.

example/lib/main.dart

import 'dart:io';

import 'package:application_management/application_management.dart';
import 'package:flutter/material.dart';

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

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

class _MyAppState extends State<MyApp> {
  TextEditingController _controller;

  @override
  void initState() {
    super.initState();

    _controller = TextEditingController();
    _controller.text = 'com.android.chrome';
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin fun test app'),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              TextField(
                controller: _controller,
              ),
              RaisedButton(
                child: const Text('Test'),
                onPressed: () async {
                  // android test.
                  if (Platform.isAndroid) {
                    openApp(_controller.text);

                    openInAppStore(_controller.text);

                    openInSpecifyAppStore(_controller.text, 'com.tencent.android.qqdownloader',
                      'com.tencent.pangu.link.LinkProxyActivity');

                    final List<String> list = await getInstalledPackageNameList();
                    list.forEach(print);

                    final bool isAppInstalled = await isInstalled(_controller.text);
                    print(isAppInstalled);

                    final Map<String, bool> isAppListInstalledMap = await isInstalledMap(
                      <String> [_controller.text, 'test', 'com.tencent.qqlive']);
                    isAppListInstalledMap.forEach((String key, bool value) {
                      print('key: $key value: $value');
                    });
                  } 
                  else if (Platform.isIOS){
                    // ios test.
                    openApp('weixin://');

                    // weixin bundle id.
                    openInAppStore('414478124');

                    final bool isAppInstalled = await isInstalled('weixin://');
                    print(isAppInstalled);
                    
                    final Map<String, bool> isAppListInstalledMap = await isInstalledMap(
                      <String> ['weixin://', 'test://', 'tenvideo://']);
                    isAppListInstalledMap.forEach((String key, bool value) {
                      print('key: $key value: $value');
                    });
                  }
                  else {
                    print('Not support on ${Platform.operatingSystem}');
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  application_management: ^0.0.1

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:application_management/application_management.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
19
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
90
Overall:
Weighted score of the above. [more]
58
Learn more about scoring.

We analyzed this package on Jul 2, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.8.4
  • pana: 0.13.13
  • Flutter: 1.17.5

Analysis suggestions

Package does not support Flutter platform linux

Because of import path [package:application_management/application_management.dart] that declares support for platforms: android, ios

Package does not support Flutter platform macos

Because of import path [package:application_management/application_management.dart] that declares support for platforms: android, ios

Package does not support Flutter platform web

Because of import path [package:application_management/application_management.dart] that declares support for platforms: android, ios

Package does not support Flutter platform windows

Because of import path [package:application_management/application_management.dart] that declares support for platforms: android, ios

Package not compatible with SDK dart

because of import path [application_management] that is in a package requiring null.

Health suggestions

Format lib/application_management.dart.

Run flutter format to format lib/application_management.dart.

Maintenance suggestions

Package is pre-v0.1 release. (-10 points)

While nothing is inherently wrong with versions of 0.0.*, it might mean that the author is still experimenting with the general direction of the API.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.2.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.12 1.14.13
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6 1.2.0
vector_math 2.0.8
Dev dependencies
flutter_test