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