flutter - 如何将 Flutter 应用设置为默认短信应用?
问题描述
我想制作自定义短信应用程序,为此它应该是默认短信应用程序。在 android 中,我们使用此代码将应用程序设为默认短信应用程序。
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
myPackageName);
startActivity(intent);
有人可以帮助如何在 Flutter 中实现这一目标。谢谢
解决方案
只需创建一个方法通道
class MainActivity : FlutterActivity() {
private val CHANNEL = "com.example.chat/chat"
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "setDefaultSms") {
try {
var intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(
Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
<the app package name>
);
startActivity(intent);
result.success("Success")
} catch (ex: Exception) {
result.error("UNAVAILABLE", "Setting default sms.", null)
}
} else {
result.notImplemented()
}
}
}
}
之后在你的飞镖代码中调用方法通道
static const platform = const MethodChannel("com.example.chat/chat");
try {
final result = await platform.invokeMethod('setDefaultSms');
print("Result: $result");
} on PlatformException catch (e) {
print("Error: $e");
}
}
请注意,上述解决方案不会使您的应用程序符合默认 SMS 应用程序的条件 您可能需要在清单文件中添加一些内容以获取更多信息,请查看此帖子查看此内容
推荐阅读
- android - Storing/Moving photo to a separate app folder in the phone
- rxjs - Rxjs - Is there a static creation operator behaves like 'switchMap'?
- c# - 如何使用 C# 枚举 GridFS 中的文件
- c - 以这种方式使用指针访问数组?
- c++ - 瓦片地图碰撞
- rust - 使用 serde_yaml 在 Rust 中解析 yaml
- r - Ggplot2楼梯图不会连接点
- java - Eclipse IDE 2019-06 在打破嵌套循环后未显示提案
- ghc - `ghc Main.hs` 与 `ghc --make Main.hs` 有何不同?
- mysql - 如何检查具有多个值的列