Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 是否可以将颤振应用程序注册为Android意图过滤器并处理传入的意图?_Dart_Flutter - Fatal编程技术网

Dart 是否可以将颤振应用程序注册为Android意图过滤器并处理传入的意图?

Dart 是否可以将颤振应用程序注册为Android意图过滤器并处理传入的意图?,dart,flutter,Dart,Flutter,您可以使用颤振应用程序中的意图启动另一项活动: 但是,当一个意图被传递到应用程序时,人们可以使用flifter Activity Intent服务执行以下操作吗? 据我所知,目前无法处理来自Dart代码的传入意图。具体来说,处理传入URL的情况由跟踪 还可以处理来自Java代码的传入意图,并使用中记录的HostMessage系统将结果发布到Dart 更新2020-这可能有助于u,thios展示如何处理 终于得到了 class _SampleAppPageState extends Stat

您可以使用颤振应用程序中的意图启动另一项活动:

但是,当一个意图被传递到应用程序时,人们可以使用flifter Activity Intent服务执行以下操作吗?


据我所知,目前无法处理来自Dart代码的传入意图。具体来说,处理传入URL的情况由跟踪

还可以处理来自Java代码的传入意图,并使用中记录的HostMessage系统将结果发布到Dart


更新2020-

这可能有助于u,thios展示如何处理

终于得到了

class _SampleAppPageState extends State<SampleAppPage> {
  static const platform = const MethodChannel('app.channel.shared.data');
  String dataShared = "No data";

  @override
  void initState() {
    super.initState();
    getSharedText();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Center(child: Text(dataShared)));
  }

  getSharedText() async {
    var sharedData = await platform.invokeMethod("getSharedText");
    if (sharedData != null) {
      setState(() {
        dataShared = sharedData;
      });
    }
  }
}
class\u SampleAppPageState扩展状态{
静态常量平台=常量方法通道('app.channel.shared.data');
String dataShared=“无数据”;
@凌驾
void initState(){
super.initState();
getSharedText();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(主体:中心(子:文本(数据共享));
}
getSharedText()异步{
var sharedData=await platform.invokeMethod(“getSharedText”);
if(sharedData!=null){
设置状态(){
数据共享=共享数据;
});
}
}
}
但如果需要向android系统发送真实意图,您可以使用此库

来自官方文件-
. . .
void onCreate (Bundle savedInstanceState) {
    ...
    // Get intent, action and MIME type
    Intent intent = getIntent();
. . .
<activity
  android:name=".MainActivity"
  android:launchMode="singleTop"
  android:theme="@style/LaunchTheme"
  android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
  android:hardwareAccelerated="true"
  android:windowSoftInputMode="adjustResize">
  <!-- ... -->
  <intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
  </intent-filter>
</activity>
public class MainActivity extends FlutterActivity {

  private String sharedText;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
      if ("text/plain".equals(type)) {
        handleSendText(intent); // Handle text being sent
      }
    }

    MethodChannel(getFlutterView(), "app.channel.shared.data")
      .setMethodCallHandler(MethodChannel.MethodCallHandler() {
        @Override
        public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {
          if (methodCall.method.contentEquals("getSharedText")) {
            result.success(sharedText);
            sharedText = null;
          }
        }
      });
  }

  void handleSendText(Intent intent) {
    sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
  }
}
class _SampleAppPageState extends State<SampleAppPage> {
  static const platform = const MethodChannel('app.channel.shared.data');
  String dataShared = "No data";

  @override
  void initState() {
    super.initState();
    getSharedText();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Center(child: Text(dataShared)));
  }

  getSharedText() async {
    var sharedData = await platform.invokeMethod("getSharedText");
    if (sharedData != null) {
      setState(() {
        dataShared = sharedData;
      });
    }
  }
}