小楠爷Nm 2023-05-15 09:56 采纳率: 33.3%
浏览 49
已结题

Xamarin.Forms 点击按钮怎么打开另外一个程序? 目前只知道另外程序的packname。求解决方案

Xamarin.Forms 点击按钮怎么打开另外一个程序? 目前只知道另外程序的packname。求解决方案

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-05-15 10:03
    关注

    基于Monster 组和GPT的调写:

    • 在 Android 中,用 Intent 来打开另一个应用。在 Xamarin.Forms 中,用 DependencyService 来调用 Android 特定的代码。
    • 先要在你的 Xamarin.Forms 项目中创建一个接口。这个接口定义了你想要执行的操作。在你的情况下要创建一个如下的接口:
    public interface IAppHandler
    {
        Task<bool> LaunchApp(string packageName);
    }
    

    然后在 Android 项目中实现这个接口:

    [assembly: Xamarin.Forms.Dependency(typeof(AppHandler))]
    namespace YourNamespace.Droid
    {
        public class AppHandler : IAppHandler
        {
            public Task<bool> LaunchApp(string packageName)
            {
                bool result = false;
    
                Intent intent = Android.App.Application.Context.PackageManager.GetLaunchIntentForPackage(packageName);
    
                if (intent != null)
                {
                    intent.AddFlags(ActivityFlags.NewTask);
                    Android.App.Application.Context.StartActivity(intent);
                    result = true;
                }
    
                return Task.FromResult(result);
            }
        }
    }
    

    最后在 Xamarin.Forms 中调用这个方法:

    var appHandler = DependencyService.Get<IAppHandler>();
    await appHandler.LaunchApp("com.yourpackage.name");
    
    • 这个代码会试启动一个特定包名的应用。如果设备上没有这个应用,或者这个应用没有主活动,GetLaunchIntentForPackage 将会返回 null,然后 LaunchApp 方法会返回 false。如果成功启动了应用,LaunchApp 方法会返回 true。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 已采纳回答 5月15日
  • 专家修改了标签 5月15日
  • 创建了问题 5月15日