从另一个Android应用程序启动Xamarin Android应用程序
正如标题所述,我正在尝试从另一个(本机)Android应用程序启动一个Android Xamarin应用程序,从另一个Android应用程序启动Xamarin Android应用程序,android,android-intent,xamarin.android,Android,Android Intent,Xamarin.android,正如标题所述,我正在尝试从另一个(本机)Android应用程序启动一个Android Xamarin应用程序,packageManager.QueryInputActivities查询失败。因此,我可能在Android应用程序方面做错了什么,或者更可能在Xamarin方面做错了什么 下面是Xamarin侧的类定义: using Android.OS; namespace DeepLinkTest.Droid { [Activity(Label = "DeepLinkTest", Ico
packageManager.QueryInputActivities
查询失败。因此,我可能在Android应用程序方面做错了什么,或者更可能在Xamarin方面做错了什么
下面是Xamarin侧的类定义:
using Android.OS;
namespace DeepLinkTest.Droid
{
[Activity(Label = "DeepLinkTest", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
[IntentFilter(new[] { Android.Content.Intent.ActionView },
DataScheme = "*",
DataHost = "deeplinktest",
DataPath = "MyAppDidComplete",
Categories = new[] { Android.Content.Intent.CategoryDefault })]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
}
}
根据我所阅读的intent
是main活动上方所示的位置
下面是我在本机Android应用程序中所做的调用(基于uri的调用-也许这就是问题所在?)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("deeplinktest://MyAppDidComplete/somedata"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
// Start an activity if it's safe
if (isIntentSafe) {
startActivity(intent);
}
Intent Intent=newintent(Intent.ACTION\u视图,Uri.parse(“deeplinktest://MyAppDidComplete/somedata"));
intent.setFlags(intent.FLAG\u活动\u新任务);
//验证它是否已解决
PackageManager PackageManager=getPackageManager();
列表活动=packageManager.QueryInputActivities(intent,0);
布尔值isIntentSafe=activities.size()>0;
//如果安全的话,开始一项活动
如果(isIntentSafe){
星触觉(意向);
}
您混淆了URL的主机和方案。您的网址:
"deeplinktest://MyAppDidComplete/somedata"
细分如下:
- 方案:“深度链接测试”
- 主持人:“MyAppDidComplete”
- 路径:“/somedata”
您的IntentFilter
设置为匹配:
- scheme=“*”
- host=“deeplinktest”
- path=“MyAppDidComplete”
您应该修改其中一个,使其匹配。谢谢!这正是问题所在。