首页 > 解决方案 > 如何将 Flutter 应用设置为默认短信应用?

问题描述

我想制作自定义短信应用程序,为此它应该是默认短信应用程序。在 android 中,我们使用此代码将应用程序设为默认短信应用程序。

 Intent intent =   new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
                    intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, 
                            myPackageName);
                    startActivity(intent);
        

有人可以帮助如何在 Flutter 中实现这一目标。谢谢

标签: flutterdartpermissionssmsflutter-dependencies

解决方案


只需创建一个方法通道

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 应用程序的条件 您可能需要在清单文件中添加一些内容以获取更多信息,请查看此帖子查看此内容


推荐阅读