Flutter权限检测插件root_check的使用

Flutter权限检测插件root_check的使用

root_check 是一个用于检查设备是否已root的Flutter插件。该插件基于 RootBeer 库。

如何安装插件

首先,在项目的 pubspec.yaml 文件中添加 root_check 依赖:

dependencies:
  flutter:
    sdk: flutter

  root_check: ^0.0.1

然后在终端运行以下命令以获取并安装依赖:

flutter pub get

完整示例代码

以下是一个完整的示例代码,展示了如何使用 root_check 插件来检测设备是否已被root。

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

import 'package:root_check/root_check.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _text = '未知';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们在异步方法中进行初始化。
  Future<void> initPlatformState() async {
    // 检查是否存在特定的二进制文件
    bool? checkForBinary = await RootCheck.checkForBinary("main.dart");
    // 检查是否存在BusyBox二进制文件
    bool? checkForBusyBoxBinary = await RootCheck.checkForBusyBoxBinary;
    // 检查是否可以加载本地库
    bool? canLoadNativeLibrary = await RootCheck.canLoadNativeLibrary;
    // 检查是否存在危险属性
    bool? checkForDangerousProps = await RootCheck.checkForDangerousProps;
    // 检查是否存在Magisk二进制文件
    bool? checkForMagiskBinary = await RootCheck.checkForMagiskBinary;
    // 检查是否存在读取本地库的访问权限
    bool? checkForNativeLibraryReadAccess = await RootCheck.checkForNativeLibraryReadAccess;
    // 检查是否存在根目录
    bool? checkForRootNative = await RootCheck.checkForRootNative;
    // 检查是否存在可写路径
    bool? checkForRWPaths = await RootCheck.checkForRWPaths;
    // 检查是否存在Su二进制文件
    bool? checkForSuBinary = await RootCheck.checkForSuBinary;
    // 检查Su是否存在
    bool? checkSuExists = await RootCheck.checkSuExists;
    // 使用BusyBox检查是否被root
    bool? isRootedWithBusyBoxCheck = await RootCheck.isRootedWithBusyBoxCheck;
    // 检查是否被root
    bool? isRooted = await RootCheck.isRooted;
    // 检测潜在的危险应用
    bool? detectPotentiallyDangerousApps = await RootCheck.detectPotentiallyDangerousApps;
    // 检测伪装root的应用
    bool? detectRootCloakingApps = await RootCheck.detectRootCloakingApps;
    // 检测管理root的应用
    bool? detectRootManagementApps = await RootCheck.detectRootManagementApps;
    // 检测测试密钥
    bool? detectTestKeys = await RootCheck.detectTestKeys;

    String t =
        "\n检查特定二进制文件 : $checkForBinary\n检查BusyBox二进制文件 : $checkForBusyBoxBinary\n可以加载本地库 : $canLoadNativeLibrary\n检查危险属性 : $checkForDangerousProps\n检查Magisk二进制文件 : $checkForMagiskBinary\n检查读取本地库的访问权限 : $checkForNativeLibraryReadAccess\n检查根目录 : $checkForRootNative\n检查可写路径 : $checkForRWPaths\n检查Su二进制文件 : $checkForSuBinary\n检查Su是否存在 : $checkSuExists\n使用BusyBox检查是否被root : $isRootedWithBusyBoxCheck\n是否被root : $isRooted\n检测潜在的危险应用 : $detectPotentiallyDangerousApps\n检测伪装root的应用 : $detectRootCloakingApps\n检测管理root的应用 : $detectRootManagementApps\n检测测试密钥 : $detectTestKeys";

    if (!mounted) return;

    setState(() {
      _text = t;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行于: $_text\n'),
        ),
      ),
    );
  }
}

更多关于Flutter权限检测插件root_check的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter权限检测插件root_check的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter权限检测插件root_check的使用,以下是一个简单的代码示例,展示如何在Flutter应用中检测设备是否已root。

首先,确保你的Flutter项目已经创建。如果还没有,可以通过以下命令创建一个新的Flutter项目:

flutter create my_app
cd my_app

然后,在你的pubspec.yaml文件中添加root_check依赖:

dependencies:
  flutter:
    sdk: flutter
  root_check: ^x.y.z  # 请替换为最新版本号

运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中使用root_check插件来检测设备是否已root。以下是一个简单的示例代码:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Root Check Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RootCheckScreen(),
    );
  }
}

class RootCheckScreen extends StatefulWidget {
  @override
  _RootCheckScreenState createState() => _RootCheckScreenState();
}

class _RootCheckScreenState extends State<RootCheckScreen> {
  bool _isRoot = false;
  String _result = 'Checking root status...';

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

  Future<void> _checkRootStatus() async {
    bool isRoot = await RootCheck.isDeviceRooted;
    setState(() {
      _isRoot = isRoot;
      _result = isRoot ? 'Device is rooted' : 'Device is not rooted';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Root Check Demo'),
      ),
      body: Center(
        child: Text(
          _result,
          style: TextStyle(fontSize: 24),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个RootCheckScreen,用于检测设备是否已root。在initState方法中,我们调用_checkRootStatus方法来异步检测设备的root状态,并在获取结果后更新UI。

RootCheck.isDeviceRooted是一个异步方法,返回一个布尔值,表示设备是否已root。我们使用setState方法来更新UI,以显示设备的root状态。

运行这个应用,你应该能够看到设备是否已root的结果显示在屏幕上。

请注意,root_check插件的实现和API可能会随着版本的更新而变化,因此请务必查阅最新的官方文档以获取最准确的信息。

回到顶部