debug: added android env variables
This commit is contained in:
parent
487ac5c677
commit
5b3eed7449
5 changed files with 52 additions and 13 deletions
1
android/.gitignore
vendored
1
android/.gitignore
vendored
|
@ -1,5 +1,6 @@
|
||||||
gradle-wrapper.jar
|
gradle-wrapper.jar
|
||||||
/.gradle
|
/.gradle
|
||||||
|
/build/
|
||||||
/captures/
|
/captures/
|
||||||
/gradlew
|
/gradlew
|
||||||
/gradlew.bat
|
/gradlew.bat
|
||||||
|
|
|
@ -54,6 +54,10 @@ public class AppAdapterHandler implements MethodChannel.MethodCallHandler {
|
||||||
result.success(getAppNames());
|
result.success(getAppNames());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "getEnv": {
|
||||||
|
result.success(getEnv());
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "edit": {
|
case "edit": {
|
||||||
String title = call.argument("title");
|
String title = call.argument("title");
|
||||||
Uri uri = Uri.parse(call.argument("uri"));
|
Uri uri = Uri.parse(call.argument("uri"));
|
||||||
|
@ -168,6 +172,10 @@ public class AppAdapterHandler implements MethodChannel.MethodCallHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<String, String> getEnv() {
|
||||||
|
return System.getenv();
|
||||||
|
}
|
||||||
|
|
||||||
private void edit(String title, Uri uri, String mimeType) {
|
private void edit(String title, Uri uri, String mimeType) {
|
||||||
Intent intent = new Intent(Intent.ACTION_EDIT);
|
Intent intent = new Intent(Intent.ACTION_EDIT);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||||
|
|
|
@ -5,7 +5,7 @@ buildscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:4.0.0-rc01'
|
classpath 'com.android.tools.build:gradle:4.0.0'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,16 @@ class AndroidAppService {
|
||||||
return Uint8List(0);
|
return Uint8List(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<Map> getEnv() async {
|
||||||
|
try {
|
||||||
|
final result = await platform.invokeMethod('getEnv');
|
||||||
|
return result as Map;
|
||||||
|
} on PlatformException catch (e) {
|
||||||
|
debugPrint('getEnv failed with code=${e.code}, exception=${e.message}, details=${e.details}}');
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
static Future<void> edit(String uri, String mimeType) async {
|
static Future<void> edit(String uri, String mimeType) async {
|
||||||
try {
|
try {
|
||||||
await platform.invokeMethod('edit', <String, dynamic>{
|
await platform.invokeMethod('edit', <String, dynamic>{
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
import 'dart:collection';
|
||||||
|
|
||||||
import 'package:aves/model/collection_source.dart';
|
import 'package:aves/model/collection_source.dart';
|
||||||
import 'package:aves/model/favourite_repo.dart';
|
import 'package:aves/model/favourite_repo.dart';
|
||||||
import 'package:aves/model/image_entry.dart';
|
import 'package:aves/model/image_entry.dart';
|
||||||
import 'package:aves/model/image_metadata.dart';
|
import 'package:aves/model/image_metadata.dart';
|
||||||
import 'package:aves/model/metadata_db.dart';
|
import 'package:aves/model/metadata_db.dart';
|
||||||
import 'package:aves/model/settings.dart';
|
import 'package:aves/model/settings.dart';
|
||||||
|
import 'package:aves/services/android_app_service.dart';
|
||||||
import 'package:aves/services/android_file_service.dart';
|
import 'package:aves/services/android_file_service.dart';
|
||||||
import 'package:aves/utils/android_file_utils.dart';
|
import 'package:aves/utils/android_file_utils.dart';
|
||||||
import 'package:aves/utils/file_utils.dart';
|
import 'package:aves/utils/file_utils.dart';
|
||||||
|
@ -31,6 +34,7 @@ class DebugPageState extends State<DebugPage> {
|
||||||
Future<List<AddressDetails>> _dbAddressLoader;
|
Future<List<AddressDetails>> _dbAddressLoader;
|
||||||
Future<List<FavouriteRow>> _dbFavouritesLoader;
|
Future<List<FavouriteRow>> _dbFavouritesLoader;
|
||||||
Future<List<Tuple2<String, bool>>> _volumePermissionLoader;
|
Future<List<Tuple2<String, bool>>> _volumePermissionLoader;
|
||||||
|
Future<Map> _envLoader;
|
||||||
|
|
||||||
List<ImageEntry> get entries => widget.source.entries;
|
List<ImageEntry> get entries => widget.source.entries;
|
||||||
|
|
||||||
|
@ -38,14 +42,21 @@ class DebugPageState extends State<DebugPage> {
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_startDbReport();
|
_startDbReport();
|
||||||
_checkVolumePermissions();
|
_volumePermissionLoader = Future.wait<Tuple2<String, bool>>(
|
||||||
|
AndroidFileUtils.storageVolumes.map(
|
||||||
|
(volume) => AndroidFileService.hasGrantedPermissionToVolumeRoot(volume.path).then(
|
||||||
|
(value) => Tuple2(volume.path, value),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
_envLoader = AndroidAppService.getEnv();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MediaQueryDataProvider(
|
return MediaQueryDataProvider(
|
||||||
child: DefaultTabController(
|
child: DefaultTabController(
|
||||||
length: 3,
|
length: 4,
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Debug'),
|
title: const Text('Debug'),
|
||||||
|
@ -54,6 +65,7 @@ class DebugPageState extends State<DebugPage> {
|
||||||
Tab(icon: Icon(OMIcons.whatshot)),
|
Tab(icon: Icon(OMIcons.whatshot)),
|
||||||
Tab(icon: Icon(OMIcons.settings)),
|
Tab(icon: Icon(OMIcons.settings)),
|
||||||
Tab(icon: Icon(OMIcons.sdStorage)),
|
Tab(icon: Icon(OMIcons.sdStorage)),
|
||||||
|
Tab(text: 'Env'),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -63,6 +75,7 @@ class DebugPageState extends State<DebugPage> {
|
||||||
_buildGeneralTabView(),
|
_buildGeneralTabView(),
|
||||||
_buildSettingsTabView(),
|
_buildSettingsTabView(),
|
||||||
_buildStorageTabView(),
|
_buildStorageTabView(),
|
||||||
|
_buildEnvTabView(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -266,6 +279,23 @@ class DebugPageState extends State<DebugPage> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget _buildEnvTabView() {
|
||||||
|
return ListView(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
children: [
|
||||||
|
FutureBuilder(
|
||||||
|
future: _envLoader,
|
||||||
|
builder: (context, AsyncSnapshot<Map> snapshot) {
|
||||||
|
if (snapshot.hasError) return Text(snapshot.error.toString());
|
||||||
|
if (snapshot.connectionState != ConnectionState.done) return const SizedBox.shrink();
|
||||||
|
final data = SplayTreeMap.of(snapshot.data.map((k, v) => MapEntry(k.toString(), v?.toString() ?? 'null')));
|
||||||
|
return InfoRowGroup(data);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void _startDbReport() {
|
void _startDbReport() {
|
||||||
_dbFileSizeLoader = metadataDb.dbFileSize();
|
_dbFileSizeLoader = metadataDb.dbFileSize();
|
||||||
_dbDateLoader = metadataDb.loadDates();
|
_dbDateLoader = metadataDb.loadDates();
|
||||||
|
@ -274,14 +304,4 @@ class DebugPageState extends State<DebugPage> {
|
||||||
_dbFavouritesLoader = metadataDb.loadFavourites();
|
_dbFavouritesLoader = metadataDb.loadFavourites();
|
||||||
setState(() {});
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _checkVolumePermissions() {
|
|
||||||
_volumePermissionLoader = Future.wait<Tuple2<String, bool>>(
|
|
||||||
AndroidFileUtils.storageVolumes.map(
|
|
||||||
(volume) => AndroidFileService.hasGrantedPermissionToVolumeRoot(volume.path).then(
|
|
||||||
(value) => Tuple2(volume.path, value),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue