c# – 打开另一个应用程序并传入URL

c# – 打开另一个应用程序并传入URL,第1张

概述当我点击按钮时,我正在尝试统一打开Goog​​le应用.我在我的Android设备上运行应用程序,但它无法正常工作这是我使用的代码Application.OpenURL("gplus://plus.google.com/+JewelMash");此代码有效但它会提示您选择使用浏览器或谷歌应用程序打开它Application.OpenURL("ht

当我点击按钮时,我正在尝试统一打开Goog​​le应用.
我在我的Android设备上运行应用程序,但它无法正常工作
这是我使用的代码

Application.OpenURL ("gplus://plus.Google.com/+JewelMash");

此代码有效但它会提示您选择使用浏览器或谷歌应用程序打开它

Application.OpenURL ("https://plus.Google.com/+JewelMash");

解决方法:

Application.OpenURL函数无法执行此 *** 作.我以前做过这个并且愿意分享.您可以创建一个Java插件来执行此 *** 作,也可以使用AndroidJavaClass和C#来执行此 *** 作.我在C#中做了我的,因为这是一个简单的插件.

要打开任何应用程序:

public bool openUrl(string packagename){    #if UNITY_ANDROID    AndroIDJavaClass unityPlayer = new AndroIDJavaClass("com.unity3d.player.UnityPlayer");    AndroIDJavaObject unityActivity = unityPlayer.GetStatic<AndroIDJavaObject>("currentActivity");    AndroIDJavaObject pManager = unityActivity.Call<AndroIDJavaObject>("getPackageManager");    AndroIDJavaObject intent = null;    try    {        intent = pManager.Call<AndroIDJavaObject>("getLaunchIntentForPackage", packagename);        unityActivity.Call("startActivity", intent);        return true;    }    catch (Exception e)    {        DeBUG.LogWarning("Failed to Opeen App: " + e.Message);        //Open with browser        string link = "https://play.Google.com/store/apps/details?ID=" + packagename + "&hl=en";        Application.OpenURL(link);        return false;    }    #endif    return false;}

用法:

bool success = openUrl("com.Google.androID.apps.plus");

要打开另一个应用程序,然后传入Url:

public bool openUrl(string packagename, string url){    #if UNITY_ANDROID    AndroIDJavaClass unityPlayer = new AndroIDJavaClass("com.unity3d.player.UnityPlayer");    AndroIDJavaObject unityActivity = unityPlayer.GetStatic<AndroIDJavaObject>("currentActivity");    AndroIDJavaObject pManager = unityActivity.Call<AndroIDJavaObject>("getPackageManager");    //For accessing static strings(ACTION_VIEW) from androID.content.Intent    AndroIDJavaClass intentStaticclass = new AndroIDJavaClass("androID.content.Intent");    string actionVIEw = intentStaticclass.GetStatic<string>("ACTION_VIEW");    //Create Uri    AndroIDJavaClass uriClass = new AndroIDJavaClass("androID.net.Uri");    AndroIDJavaObject uriObject = uriClass.CallStatic<AndroIDJavaObject>("parse", url);    //Psss ACTION_VIEW and Uri.parse to the intent    AndroIDJavaObject intent = new AndroIDJavaObject("androID.content.Intent", actionVIEw, uriObject);    try    {        if (pManager.Call<AndroIDJavaObject>("getPackageInfo", packagename, 0) != null)        {            intent.Call<AndroIDJavaObject>("setPackage", packagename);        }    }    catch (Exception e)    {        DeBUG.LogWarning("Failed to Open App 1: " + e.Message);        return false;    }    try    {        unityActivity.Call("startActivity", intent);        return true;    }    catch (Exception e)    {        DeBUG.LogWarning("Failed to Open App 2: " + e.Message);        //Open with browser        string link = "https://play.Google.com/store/apps/details?ID=" + packagename + "&hl=en";        Application.OpenURL(link);        return false;    }    #endif    return false;}

用法:

 bool success = openUrl("com.Google.androID.apps.plus", "https://plus.Google.com/+JewelMash");

您正在寻找第二个代码.如果要查找其他应用程序的包名称,请使用下图:

此解决方案适用于AndroID.您将需要Object-C插件才能在iOS中执行此 *** 作.我建议你在iOS上提出一个关于如何做到这一点的新问题.

总结

以上是内存溢出为你收集整理的c# – 打开另一个应用程序并传入URL全部内容,希望文章能够帮你解决c# – 打开另一个应用程序并传入URL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1101712.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存