Commit e9b7f361 by tanghuan

打开相册指令、打开相机指令

1 parent a63df17e
......@@ -31,6 +31,8 @@ import 'package:appframe/data/repositories/message/screen_handler.dart';
import 'package:appframe/data/repositories/message/share_handler.dart';
import 'package:appframe/data/repositories/message/share_to_wx_handler.dart';
import 'package:appframe/data/repositories/message/storage_handler.dart';
import 'package:appframe/data/repositories/message/sys_album_handler.dart';
import 'package:appframe/data/repositories/message/sys_camera_handler.dart';
import 'package:appframe/data/repositories/message/title_bar_handler.dart';
import 'package:appframe/data/repositories/message/upload_cancel_handler.dart';
import 'package:appframe/data/repositories/message/upload_file.dart';
......@@ -167,6 +169,12 @@ Future<void> setupLocator() async {
/// 打开文档
getIt.registerLazySingleton<MessageHandler>(() => OpenDocumentHandler(), instanceName: 'openDocument');
/// 打开系统相册
getIt.registerLazySingleton<MessageHandler>(() => SysAlbumHandler(), instanceName: 'sysAlbum');
/// 打开系统相机
getIt.registerLazySingleton<MessageHandler>(() => SysCameraHandler(), instanceName: 'sysCamera');
/// 预览图片
getIt.registerLazySingleton<MessageHandler>(() => PreviewMediaHandler(), instanceName: 'previewMedia');
......
import 'dart:io';
import 'package:android_intent_plus/android_intent.dart';
import 'package:appframe/services/dispatcher.dart';
/// sysAlbum 指令处理类
///
/// 打开系统相册应用,仅 Android 平台生效。
/// 无需参数,H5 调用示例:{ "cmd": "sysAlbum" }
class SysAlbumHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(params) async {
if (!Platform.isAndroid) {
return false;
}
const intent = AndroidIntent(
action: 'android.intent.action.VIEW',
data: 'content://media/external/images/media',
);
await intent.launch();
return true;
}
}
import 'dart:io';
import 'package:android_intent_plus/android_intent.dart';
import 'package:appframe/services/dispatcher.dart';
/// sysCamera 指令处理类
///
/// 打开系统相机进行拍照或录像,仅 Android 平台生效。
/// 可选参数 type:'photo'(默认,拍照)或 'video'(录像)。
/// H5 调用示例:{ "cmd": "sysCamera" } 或 { "cmd": "sysCamera", "params": { "type": "video" } }
class SysCameraHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(params) async {
if (!Platform.isAndroid) {
return false;
}
String type = 'photo';
if (params is Map<String, dynamic>) {
type = params['type'] as String? ?? 'photo';
}
final String action = type == 'video'
? 'android.media.action.VIDEO_CAPTURE'
: 'android.media.action.IMAGE_CAPTURE';
final intent = AndroidIntent(action: action);
await intent.launch();
return true;
}
}
......@@ -34,6 +34,7 @@ dependencies:
permission_handler: ^12.0.1
url_launcher: ^6.3.2
app_settings: ^6.1.1
android_intent_plus: ^5.3.1
# --- UI 与 媒体 ---
file_picker: ^10.3.2
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!