Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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
从另一个Android应用程序启动Xamarin Android应用程序_Android_Android Intent_Xamarin.android - Fatal编程技术网

从另一个Android应用程序启动Xamarin Android应用程序

从另一个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

正如标题所述,我正在尝试从另一个(本机)Android应用程序启动一个Android Xamarin应用程序,
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”

您应该修改其中一个,使其匹配。

谢谢!这正是问题所在。