aria2 cmd set chmod, and others..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import 'package:flutter/material.dart';
import 'dart:io';
import 'dart:async';
import 'package:rxdart/rxdart.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/services.dart';
 
void main() => runApp(MaterialApp(home: MyApp(),));
 
/*
1. Copy aria2c executable to ``/mnt/sdcard`` on your device.
2. Run Android Terminal Emulator.
3. ``mkdir /data/data/jackpal.androidterm/aria2``
4. ``cat /mnt/sdcard/aria2c > /data/data/jackpal.androidterm/aria2/aria2c``
5. ``chmod 744 /data/data/jackpal.androidterm/aria2/aria2c``
6. Add the following commands to the initial command of Android
Terminal Emulator::
 
export HOME=/data/data/jackpal.androidterm/aria2; cd $HOME
 
7. Exit Android Terminal Emulator.
8. Run Android Terminal Emulator again.
9. See whether aria2c actually works by invoking ``./aria2c -v``
*/
 
class MyApp extends StatelessWidget {
  DataBloc bloc;
 
  checkPermission()async{
    var per = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
    if(per!=PermissionStatus.granted){
      await PermissionHandler().requestPermissions([PermissionGroup.storage]);
    }
  }
 
  cp()async{
    await checkPermission();
    Directory tempDir = await getExternalStorageDirectory();
    String workDir = join(tempDir.path, '');
 
    var appLocation = await getApplicationDocumentsDirectory();
 
      await Process.run('chmod', ['755', appLocation.path+'/aria2']).then((e){
        print(e.toString());
        print(e.stdout);
        print(e.stderr);
        print(e.exitCode);
        print('===============');
      });
 
//    var file1 = await rootBundle.load('assets/aria2c');
//    var buf = file1.buffer;
//    File(join(appLocation.path, 'aria2')).writeAsBytesSync(buf.asUint8List());
 
 
      await Process.run('${appLocation.path}'+'/aria2', ['-v']).then((e){
        print(e.stdout);
        print(e.stderr);
        print(e.exitCode);
      });
  }
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('sss'),),
      body: Container(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            RaisedButton(child: Text('mkdir'),onPressed: (){
                cp();
            },),
            RaisedButton(child: Text('delete'),onPressed: (){
 
            },),
            Container(
                width: 50,height: 50,child: Image(image: AssetImage('assets/img/a.png',),fit: BoxFit.cover,)),
          ],
        ),
      ),
    );
  }
}
 
class DataBloc {
  ReplaySubject dataBloc = ReplaySubject();
}

  

posted @   CrossPython  阅读(311)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示