找回密码
 立即注册
查看: 293|回复: 0

Unity 跳转Instagram App

[复制链接]
发表于 2022-6-29 16:45 | 显示全部楼层 |阅读模式
一、ios直接跳转对应网址
         Application.OpenURL(url)
二、android
        1、判断是否有应用
using (var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
    using (var currentActivity = jc.GetStatic<AndroidJavaObject>("currentActivity"))
    {
        using (var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager"))
        {
            using (var pluginClass = new AndroidJavaClass("android.content.pm.PackageManager"))
            {
                int flag = pluginClass.GetStatic<int>("GET_META_DATA");
                var packages =  packageManager.Call<AndroidJavaObject>("getInstalledApplications", flag);
                int count = packages.Call<int>("size");

                for (int i = 0; i < count; i++)
                {
                    var pkg = packages.Call<AndroidJavaObject>("get", i);
                    var pkgName = pkg.Get<string>("packageName");

                    if (pkgName == packageName)
                    {
                        Debug.LogWarning("ThirdAppUtil IsPackageInstalled  " + packageName);
                        return true;
                    }
                }
            }
        }
    }
}      2、有应用后打开,packageName="com.instagram.android"
using (var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
    using (var currentActivity = jc.GetStatic<AndroidJavaObject>("currentActivity"))
    {
        using (var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager"))
        {
            using (var intent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName))
            {
                if (null != intent)
                {
                    AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
                    AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
                    intentObject.Call<AndroidJavaObject>("setAction",
                        intentClass.GetStatic<string>("ACTION_VIEW"));
                    AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); // 对应的安卓调用函数是Uri.parse()
                    AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse",  urlScheme);
                    intentObject.Call<AndroidJavaObject>("setData", uriObject);
                    intentObject.Call<AndroidJavaObject>("setPackage",  packageName); // 记得要set package他才知道在哪里运行url sheme,否则url会从默认的浏览器里打开
                    currentActivity.Call("startActivity", intentObject);
                }
            }
        }
    }
}
urlScheme获取,参考Instagram
         3、Instagram安装后未运行,跳转失败处理。manifest内添加包名
<queries>
    <!-- 声明将要查询的包名 -->
    <package android:name="com.instagram.android" />
</queries>
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-18 06:47 , Processed in 0.084752 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表