_getMessages()
函数用于从手机获取 SMS 消息并将其存储在 _messages
中。此外,在 UI 部分,我有一个重新加载按钮 (floatingActionButton
),它调用 _getMessages()
。现在,预期的行为是,一旦打开应用程序,就应该获取现有消息并显示,对于稍后到达的新消息,要在屏幕上查看它们,用户可以按下重新加载按钮,再次调用 _getMessages()
并显示新消息。
这段代码在debug apk中有效,但是发布的apk安装在其他设备上(非调试模式)时,应用程序不起作用。另外,我使用 Telephony 来获取消息。是不是因为函数和变量在 _HomeState
中定义的方式?所以,我不确定错误是代码还是包。提前致谢。
import 'package:OffQuiz/home/Quiz/quizCard.dart';
import 'package:OffQuiz/shared/appBar.dart';
import 'package:flutter/material.dart';
import 'package:telephony/telephony.dart';
class Home extends StatefulWidget {
Home({Key? key, required this.title}) : super(key: key);
final String title;
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final telephony = Telephony.instance;
List<SmsMessage> _messages = [];
@override
void initState() {
super.initState();
_getMessages();
}
Future<void> _getMessages() async {
List<SmsMessage> temp;
temp = await telephony
.getInboxSms(columns: [SmsColumn.ADDRESS, SmsColumn.BODY]);
setState(() {
_messages = temp;
});
}
@override
Widget build(BuildContext context) {
// getMessages();
return Scaffold(
appBar: appBar("OffQuiz"),
body: _messages.length != 0
? ListView(
children: _messages
.map((quiz) => QuizCard(
quiz: quiz,
))
.toList(),
)
: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"Please reload to fetch the latest messages",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w400,
color: Colors.grey),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _getMessages,
child: Icon(
Icons.refresh,
color: Colors.white,
),
),
);
}
}
答案 0 :(得分:0)
以下对我有用,但您可以尝试以下方法,它很可能在大多数情况下都有效。
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class androidx.lifecycle.** { *; }
-keep @interface com.google.gson.annotations.SerializedName
-keep @interface com.google.gson.annotations.Expose
-keepattributes *Annotation*
#https://github.com/flutter/flutter/issues/58479
#https://medium.com/@swav.kulinski/flutter-and-android-obfuscation-8768ac544421
buildTypes {
release {
profile {
matchingFallbacks = ['debug', 'release']
}
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
lintOptions {
disable 'InvalidPackage'
checkReleaseBuilds false
}
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}