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

标签 android android-intent xamarin.android

如标题所述,我正在尝试从另一个( native )Android 应用启动 Android Xamarin 应用,但 packageManager.queryIntentActivities 查询失败。所以我可能在 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());
        }
    }
}

据我所知,intentMainActivity 上方显示的位置。

这是我在 native 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);
            }

最佳答案

您混淆了 URL 的 HOST 和 SCHEME。您的网址:

"deeplinktest://MyAppDidComplete/somedata"

分割如下:

  • 方案:“深度链接测试”
  • 主持人:“MyAppDidComplete”
  • 路径:“/一些数据”

您的 IntentFilter 设置为匹配:

  • 方案=“*”
  • host = "深度链接测试"
  • path = "MyAppDidComplete"

您应该修改一个或另一个以使它们匹配。

关于android - 从另一个 Android 应用程序启动 Xamarin Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54192665/

相关文章:

android - 某些对象不保存到 Android 内存

Android(API 7)-动画 : onAnimationRepeat

android - 用于从 Android 上的 gmail 应用程序下载附件的 Intent 过滤器

android - Xamarin 形成自定义启动屏幕

c# - Xamarin Forms 元素父属性为空

android - 拨号时启动我的应用程序

android - 快捷方式主屏幕,如何发送额外内容

安卓相机 : when capturing image data intent returns null

android - 无法在android上使用C++ OpenCV打开相机

android - 以编程方式添加布局资源