52 lines
1.7 KiB
Dart
52 lines
1.7 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:device_info_plus/device_info_plus.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:install_plugin/install_plugin.dart';
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
|
import 'package:permission_handler/permission_handler.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import '../track_event_manager/device_service.dart';
|
|
|
|
//安装工具
|
|
class InstallUtil {
|
|
static const String _firstInstallKey = 'is_first_install';
|
|
|
|
/// 检查是否是第一次安装
|
|
static Future<bool> isFirstInstall() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
return prefs.getBool(_firstInstallKey) ?? true;
|
|
}
|
|
|
|
/// 标记已经安装过
|
|
static Future<void> markAsInstalled() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setBool(_firstInstallKey, false);
|
|
}
|
|
|
|
///安装android和ios的app
|
|
installApp(String filePath) async {
|
|
//判断权限是否已有
|
|
if (await Permission.storage.request().isGranted) {
|
|
DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
|
|
deviceInfoPlugin.androidInfo.then((androidInfo) {
|
|
InstallPlugin.installApk(filePath, appId: androidInfo.id);
|
|
});
|
|
}
|
|
}
|
|
|
|
///安装apk
|
|
static Future<bool> installApk(apkPath) async {
|
|
bool exit = await File(apkPath).exists();
|
|
if (!exit) {
|
|
return Future.value(false);
|
|
}
|
|
String devId = DeviceInfoService.deviceId;
|
|
Clipboard.setData(ClipboardData(text: "***$devId^^^"));
|
|
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
|
InstallPlugin.installApk(apkPath, appId: packageInfo.packageName).then((result) {}).catchError((error) {});
|
|
return Future.value(true);
|
|
}
|
|
}
|