首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UNITY Application.OpenUrl()在Android7 Nougat上不起作用

UNITY Application.OpenUrl()是Unity引擎中的一个函数,用于在应用程序中打开指定的URL链接。然而,在Android 7 Nougat版本上,由于安全性增强的限制,该函数可能无法正常工作。

Android 7 Nougat引入了一项新的安全策略,称为"StrictMode"。该策略禁止应用程序在主线程中执行网络请求或访问外部资源,以避免阻塞用户界面。由于Application.OpenUrl()函数可能会触发网络请求,因此在Android 7 Nougat上可能会受到StrictMode的限制。

为了解决这个问题,可以使用Unity的插件系统来调用Android原生的Intent来打开URL链接。下面是一个示例代码:

代码语言:csharp
复制
#if UNITY_ANDROID && !UNITY_EDITOR
using UnityEngine;
using System.Collections;
using UnityEngine.Android;

public class OpenURL : MonoBehaviour
{
    public void Open(string url)
    {
        if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
        {
            Permission.RequestUserPermission(Permission.ExternalStorageRead);
        }

        if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
        {
            Permission.RequestUserPermission(Permission.ExternalStorageWrite);
        }

        AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent", intentClass.GetStatic<string>("ACTION_VIEW"));
        AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", url);
        intentObject.Call<AndroidJavaObject>("setData", uriObject);
        AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
        currentActivity.Call("startActivity", intentObject);
    }
}
#endif

上述代码使用了Android的Intent来打开URL链接。在使用该代码之前,需要确保在Unity的Player Settings中启用了"Write Permission"和"Read Permission"选项。

这是一个解决UNITY Application.OpenUrl()在Android 7 Nougat上不起作用的方法。希望对你有帮助!如果你有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WebGL问题总结

1.中文的输入输出问题: 1).输出问题:Unity的默认字体Arial在WebGL平台并不能正常的显示,解决方法也简单,自己创建一个字体或者去资源商店里找一个,替换所有的Text文本字体。...2).输入问题:InputField在WebGL平台里不支持中文输入,在Gihub上下载了一个插件-WebGLNativeInputField。插件写了一个InputField的派生类。...4.URL链接问题: 在PC平台使用Application.OpenURL函数可以打开指定的网页,但是在WebGL端使用该函数打开网页时会覆盖我们的程序页面,没有其他重载方法。...在Plugins文件夹下创建一个 .jslib文件。 然后在unity中通过调用声明好的外链方法实现关联,再用一个静态方法进一步封装,方便其他类调用。...使用我们自己编写的OpenURL函数代替Application.OpenURL即可。

1.5K20

11.28 VR扫描:芝麻信用没到750分?支付鸨不让评价?那就看点VR资讯吧!

3D模型 准父母可提前见到自己的孩子 为降低犯罪率 欲用VR技术改造囚犯 PTC与Unity宣布合作 加速Vuforia AR开发 近日,PTC(美国参数技术公司)与Unity Technologies...PTC携手Unity,将Vuforia AR平台融入Unity,为Unity的全球生态系统提供无缝开发体验。此外,通过有计划地对相机和绘制流水线进行优化,AR应用的性能也有望得到改进。...VRPinea独家点评:玩够了VR的Unity开始试水AR。...三星S7升级安卓7.0 却无法兼容Gear VR Phandroid报告显示,很多用户为了使Galaxy S7和Galaxy S7 Edge适配Gear VR而下载Android Nougat Beta...但因为Oculus Store与Android Nougat不兼容,为了使Gear VR在Nougat下工作,Oculus Store必须更新。目前,Oculus官方还未发布更新消息。

82180
  • 【100个 Unity实用技能】 | Unity 通过自定义菜单将资源导出

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。...未来很长,值得我们全力奔赴更美好的生活✨ ---- Unity 实用小技能学习 【100个 Unity实用技能】☀️ | Unity 通过自定义菜单将资源导出 本篇文章来简单介绍一下通过Unity的自定义菜单将资源导出的方法...AssetDatabase.ExportPackage(assetPathName, unityPackageName, ExportPackageOptions.Recurse); Application.OpenURL...结果和默认模式没有区别 Recurse 递归模式,导出时包含子目录 IncludeDependencies 包含依赖 IncludeLibraryAssets 包含ProjectSetting选项 点击之后就可以在项目文件夹下看到我们导出的....unity package文件啦!

    70610

    【100个 Unity实用技能】☀️ | UGUI Text中加入超链接文本,可直接点击跳转

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。...也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏! ---- Unity 实用小技能学习 在项目中我们可能会有需求让文本显示中增加以一个可以进行点击的具有超链接的文本。...最常见的是在一段正常文本内容中,有中间几个字可以进行点击并执行某种事件,比如很多游戏的聊天大厅中会有玩家发出一段文字并带有装备的名称,此时点击装备就可以弹窗显示装备的信息,这个也算是在文本中加入超链接的一种...private void OnHyperlinkTextInfo(string info) { Debug.Log("超链接信息:" + info); Application.OpenURL...---- 第二种方法:通过在Text组件中内嵌Button的方式完成点击功能 这个方法其实就是属于比较朴实无华的方案了,通过在Text组件再添加一个Button放到指定文字下面完成点击事件,这就属于基本的

    1.5K60

    【Unity3D 灵巧小知识点】 ☀️ | 层级面板中的 ‘小手指‘ 作用: 在Scen中将该物体设置为不可选中状态

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。...包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。...也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!...---- Unity小知识点学习 层级面板中的 ‘小手指’ 作用: 在Scen中将该物体设置为不可选中状态 在层级面板中有一个小手指一样的图标(我也不知道官方叫啥~) 当我们给物体选上之后,...小手指的作用就是,当我们点了这个小手指,成为一个斜杠似的禁止状态时 在Scene场景中我们就没法通过鼠标来选中这个物体了 ! 演示效果: ----

    2.3K31

    使用 Unity 引擎打造免安装游戏

    (我们建议在不同版本的Android OS上进行测试,至少要包括Nougat和Oreo) 具体需要多长时间取决于游戏的实施细节和复杂程度。...第1步:设置您的工作环境 请先阅读这份检查清单,确保能顺利开始后续的操作: Unity 5.6或更高版本(我们建议至少采用2017.4发布版本) 适用于Unity的Google Play Instant...插件 Unity Asset Store https://assetstore.unity.com/packages/tools/integration/google-play-instant-plug-in...设备(实体或模拟器均可),启用了开发者模式和USB调试功能 游戏APK的项目源代码,用于编译测试和发布版本 在Google Play Console中创建内部测试轨道 注册加入Unity Development...,您可能需要迁移玩家在体验时产生的一些信息。

    1.6K10

    记录一次使用安卓模拟器抓包安卓应用

    2.问题解决 最大的一个问题就是在模拟器上面进行HTTPS抓包时,会因为抓包软件的SSL证书不被信任而导致无法正常访问。...Android7以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓包就需要把我们的代理程序证书安装至Android的系统目录中。所以仍会出现证书不被信任的问题。...在同一个目录下创建命令行脚本,如下: cd php php.exe ...../spider.php pause 值得注意的是此时php程序运行时,运行目录为php目录 同时在php.ini里需要将ext_dir..(扩展目录),修改为当前php的目录。...控制台打印当前断点作用域变量。 相关文章:https://zhuanlan.zhihu.com/p/108207751?from_voters_page=true

    2.4K10

    移动AR市场风头太猛,谷歌ARCore能够狙击苹果ARkit吗?

    最近说到AR,总是会第一时间联想到苹果的ARKit平台,现在一直在移动AR上有所举动的谷歌终于坐不住了,他们在29日发布了可以和ARKit一决高低的AR平台——基于Android平台的ARCore预览版...同时,谷歌ARCore支持使用Java/OpenGL、Unity和Unreal开发虚拟角色,还支持从Tilt Brush 和Google上个月推出的VR建模工具Blocks中,直接导出ARCore对象。...在手机支持上,目前可以在Google Pixel手机和Galaxy S8上使用谷歌ARCore的一些功能,不过手机系统需要升级到Android 7.0 Nougat或最新的Android 8.0 Oreo...抢占移动AR市场 谷歌是时候反击了 在苹果推出ARkit之前,谷歌在移动AR方面有更多的布局动作,他们在去年联合华硕、联想,推出了支持Project Tango的AR手机。...结语 在AR方面,谷歌投入了诸多精力。比如他们最近刚刚宣布推出面向企业市场的Google Glass。

    1.1K00

    关于PHP缓冲控制在IE浏览器下的应用

    > 上面这段程序是实现每隔1秒钟在浏览器上输出一个字符,但实际效果是程序执行完后才把所有字符输出到浏览器上,调试了好几次都不行。在网上搜索了N个技术文章都没有解决这个问题。...最后从一篇文章上找到些灵感,那篇文章里写到flush()函数可能在微软IE浏览器的个别版本上不起作用。...于是我用FireFox浏览器试了一下,果然立即出现了想要的效果,我的浏览器是IE6,经过查阅相关资料,得知,IE的某些版本只有在字符串缓冲到256字节的时候才会将缓冲内容输出到浏览器上。...经验不敢独享,贴上来和各位一起分享,希望在大家的开发过程中如果遇到类似问题可以帮上忙!

    1.2K10

    ARCore 初探

    最近推出的Daydream 2.0版本提出了Instant Preview,在Unity平台上开发可以让手机与电脑一起联动,提高开发效率。...ARCore上手 官方运行设备 ARCore被设计用来支持数量广大的Android设备,但是目前对设备要求比较严格,要求系统不低于Android 7.0 Nougat(API 24),支持下列设备: Google...开发环境 根据目前的Google AR文档描述,支持的开发环境有Android Studio、Unity、Unreal、Web四种。下面以Android Studio为例进行开发。...首先搭建开发环境: 安装Android Studio 2.3 或更高版本,运行环境Android 7.0 Nougat(API 24)或更高版本。...异同点 光线感知:ARKit和ARCore都可以对环境光进行简单的估计,ARKit为开发者提供了强度和色温选项,而ARCore提供了单像素强度值(Android Studio API)和Shader(Unity

    6.4K11

    UNITY性能优化☀️一、GC介绍与Unity内存管理方法

    无用的堆内存只在执行GC时被释放。 每次执行GC时, 将执行以下步骤: 垃圾收集器检索堆上的每个对象。 垃圾收集器搜索所有当前对象引用以确定堆上的对象是否仍在作用域内。...3️⃣ GC导致的问题 现在我们了解了GC在Unity内存管理中的作用,我们可以考虑可能发生的问题类型。 GC可能花费相当长的时间来运行 这是最明显的问题。...当创建变量时,Unity从栈或堆中申请内存,只要变量在作用域内,分配给它的内存就会一直在使用, 我们称这部分内存已被分配。 我们将栈中的变量称为栈对象,将堆中的变量称为堆对象。...栈内存在变量超出作用域时被实时释放,而堆内存在变量超出作用域之后并没有被释放并保持被分配的状态。 垃圾收集器(garbage collector)识别和释放未使用的堆内存。...当一个变量存储在栈上时,它的内存就是简单地从栈顶分配。 栈变量超出作用域时,用于存储该变量的内存将立即返回栈进行重用。 2️⃣ 在堆分配时发生了什么 堆分配比栈分配复杂的多。

    45310

    谷歌Daydream:我们的征途是星辰大海

    在正式发货之前,谷歌一直在为给用户带来更好的移动VR体验做各方面的优化。...考虑到Daydream View对手机系统和配置的高要求,谷歌先是在10月底推出了Android 7.0 Nougat的更新版本——Android 7.1的开发者预览版。...在佩戴舒适度上,设计的弹簧合页可允许View的前翻盖进行扩展,以适应不同厚度的手机。...开发者可以通过这个SDK为符合Daydream的VR头显打造VR体验,同时,它还支持Unity和Unreal游戏引擎工具的集成。...但是考虑到移动VR硬件配置上的局限性,VR游戏在Daydream平台上要比视频内容的数量少,VR游戏更多的还是要倚靠PC VR这些高端设备。正如谷歌负责人所说,Daydream集中在视频内容上。

    51840
    领券