From 8800f4bebf64b21c9714e2f9043a34097eb6a4fd Mon Sep 17 00:00:00 2001
From: Daisy <>
Date: Mon, 24 Jun 2024 09:22:31 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E5=8D=93=E6=9F=A5=E7=9C=8B=E5=AF=BC?=
=?UTF-8?q?=E5=87=BA=E8=AE=B0=E5=BD=95=E5=8F=8A=E5=88=86=E4=BA=AB=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81=E6=96=B0=E5=A2=9E=EF=BC=88=E6=9C=89=E9=97=AE=E9=A2=98?=
=?UTF-8?q?=EF=BC=8C=E9=9C=80=E9=BB=84=E6=80=BB=E5=8D=8F=E5=8A=A9=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
android/app/src/main/AndroidManifest.xml | 11 ++++
.../kotlin/com/skychip/lock/MainActivity.kt | 50 ++++++++++++++++---
android/app/src/main/res/xml/file_paths.xml | 4 ++
.../exportRecordDialog_logic.dart | 1 -
.../exportRecordDialog_state.dart | 1 -
.../exportSuccess/exportSuccess_page.dart | 23 ---------
6 files changed, 58 insertions(+), 32 deletions(-)
create mode 100644 android/app/src/main/res/xml/file_paths.xml
delete mode 100644 lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_logic.dart
delete mode 100644 lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_state.dart
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 93cfda8c..5ec69bdd 100755
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -60,7 +60,18 @@
android:name="android.app.Application"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true">
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt b/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt
index a4f10348..0c14a684 100755
--- a/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/skychip/lock/MainActivity.kt
@@ -9,6 +9,8 @@ import io.flutter.plugin.common.MethodChannel
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant
import android.bluetooth.BluetoothAdapter;
+import androidx.core.content.FileProvider
+import java.io.File
class MainActivity : FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -16,9 +18,15 @@ class MainActivity : FlutterActivity() {
GeneratedPluginRegistrant.registerWith(flutterEngine!!)
MethodChannel(flutterEngine?.dartExecutor!!.binaryMessenger, "starLockFlutterSend").setMethodCallHandler { call, result ->
if (call.method == "loadNativeShare") {
- var map = call.arguments as Map
- shareText(map["shareText"] , "分享")
- } else if (call.method == "sendGetBlueStatus") {
+ val map = call.arguments as Map
+ val shareText = map["shareText"]
+ val urlToShare = map["urlToShare"]
+ if (urlToShare == "fileShare") {
+ shareFile(shareText)
+ } else {
+ shareText(shareText, "分享")
+ }
+ } else if (call.method == "sendGetBlueStatus") {
// 蓝牙是否开启
// println("收到原生的信息了 methodmethodmethod: ${call.method}")
val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
@@ -56,13 +64,41 @@ class MainActivity : FlutterActivity() {
startActivity(Intent.createChooser(shareIntent, null))
}
+ fun shareFile(filePath: String?) {
+ if (filePath == null) {
+ return
+ }
+
+ val file = File(filePath)
+ val uri: Uri = FileProvider.getUriForFile(
+ this,
+ "${applicationContext.packageName}.fileprovider",
+ file
+ )
+
+ val shareIntent = Intent().apply {
+ action = Intent.ACTION_SEND
+ putExtra(Intent.EXTRA_STREAM, uri)
+ type = "application/octet-stream"
+ addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+ }
+
+ startActivity(Intent.createChooser(shareIntent, null))
+ }
+
+
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
- GeneratedPluginRegistrant.registerWith(flutterEngine);
+ GeneratedPluginRegistrant.registerWith(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "starLockFlutterSend").setMethodCallHandler { call, result ->
- println("methodmethodmethod: ${call.method}")
- // 在这里处理从 Flutter 发送过来的方法调用
if (call.method == "loadNativeShare") {
- println("methodmethodmethod: ${call.method}")
+ val map = call.arguments as Map
+ val shareText = map["shareText"]
+ val urlToShare = map["urlToShare"]
+ if (urlToShare == "fileShare") {
+ shareFile(shareText)
+ } else {
+ shareText(shareText, "分享")
+ }
} else {
result.notImplemented()
}
diff --git a/android/app/src/main/res/xml/file_paths.xml b/android/app/src/main/res/xml/file_paths.xml
new file mode 100644
index 00000000..7fe5a78c
--- /dev/null
+++ b/android/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_logic.dart b/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_logic.dart
deleted file mode 100644
index 8b137891..00000000
--- a/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_logic.dart
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_state.dart b/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_state.dart
deleted file mode 100644
index 8b137891..00000000
--- a/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_state.dart
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart
index e36c6f27..f66c2238 100644
--- a/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart
+++ b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart
@@ -1,17 +1,13 @@
-import 'dart:io';
-
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:open_file/open_file.dart';
-import 'package:path_provider/path_provider.dart';
import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_logic.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart';
import 'package:star_lock/tools/NativeInteractionTool.dart';
import 'package:star_lock/tools/submitBtn.dart';
import 'package:star_lock/tools/titleAppBar.dart';
-import 'package:url_launcher/url_launcher.dart';
class ExportSuccessPage extends StatefulWidget {
const ExportSuccessPage({Key? key}) : super(key: key);
@@ -94,23 +90,4 @@ class _ExportSuccessPageState extends State with RouteAware {
],
);
}
-
- Future previewFile() async {
- // 获取本地文件路径
- final Directory appDocDir = await getApplicationDocumentsDirectory();
- final String appDocPath = appDocDir.path;
- final String filePath = '$appDocPath/record.xlsx';
-
- // 检查文件是否存在
- final File file = File(filePath);
- if (await file.exists()) {
- // 使用url_launcher打开文件
- final bool launched = await launchUrl(Uri.parse(filePath));
- if (!launched) {
- throw 'Could not launch $filePath';
- }
- } else {
- print('File does not exist');
- }
- }
}