Possible to deep link from phone app to Quest headset?
Here's the use case I'd like to implement: - A first user shares a link on their phone which deep links back to a piece of content in a Quest app (the user shares the link in a caption on a social post, they post it online via a mobile browser, send it to someone via text, etc) - A second user taps the link on their phone; this user has the Meta app installed and their Quest paired - On the second user's phone, the deep link opens the Meta app and launches the deep-linked Quest app/content on their headset The purpose here is to enable users to share out a piece of VR content from an app via a link, and have other users easily launch into that content on their Quest headset (in this example, using the Meta app as an intermediary to launch the appropriate app/content on the paired Quest headset). Is something like this possible and/or in the pipeline? Thank you!1.3KViews2likes1CommentSharedUserID is breaking deeplinking
We're running into an issue with our apps, trying to use the Deeplinking system in Unreal 4.27, our app is targeting SDK 32, minimum 29. Once we call the LaunchOtherApp function, we see the app flashing, either to black if the deeplink target app is installed, or we catch a quick glimpse of the Store page opening up in the browser, but then the initial application gains focus back and the user is never deeplinked anywhere. We've played around and can confirm that the issue is caused from our app having the SharedUserID flag set in the manifest (we are forced to have it to upload to the store) Using the exact same project and code, if we remove the SharedUserID flag from the manifest, deeplinking starts working again, as expected. Anyone else with this behavior, any known fix to this?449Views0likes0CommentsOpen application from Quest web browser through a "android:scheme" Deeplink
I followed the Android deep linking documentation to be able to open my Quest application from the Quest web browser: 1. Edit the AndroidManifest.xml of the application to add this: <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos” --> <data android:scheme="example" android:host="gizmos" /> </intent-filter> 2. Deploy the application to the Quest device 3. Run this command where "com.example.android" is the application pacakge: adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android This works, e.g the previous command launches the application on the device. The "android.intent.category.BROWSABLE" is here to allow this intent action to be launched from a web browser. So now please open the Quest web browser on the device, then try to navigate to the "example://gizmos" URL. This does not work, e.g the application is not launched by querying the "example://gizmos" URL from the Quest web browser. The Android Log cat shows the following output: 2023/05/15 10:52:57.625 24304 24304 Info chromium [INFO:web_contents_impl.cc(6947)] WebContentsImpl Loading end: ID = 3 2023/05/15 10:52:57.630 24304 24304 Info cr_tabmodel Appending tabs being restored to metadata lists, 0, startingNormalCount: 2, startingIncognitoCount: 0 2023/05/15 10:52:57.630 24304 24304 Info cr_tabmodel Serializing tab lists; counts: 2, 0 2023/05/15 10:52:57.635 2990 3117 Warn [CT] Anchor:SlamAnchorMemoryOSSDKClient: [Throttled count=551] Skipping invalid anchorHandle when attempting to cache AnchorStates 2023/05/15 10:52:57.649 22167 22167 Debug Zygote Forked child process 28240 2023/05/15 10:52:57.651 1083 1172 Debug ActivityManager Is background playback GK enabled: false Is background playback enabled for all apps: false 2023/05/15 10:52:57.651 1083 1172 Error AppOps Cannot setMode 2023/05/15 10:52:57.651 1083 1172 Error AppOps java.lang.SecurityException: Specified package com.oculus.browser under uid 90086 but it is not 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4621) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4513) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2784) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2770) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.setAppOpMode(ActivityManagerService.java:14775) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.onTopAppStatusChanged(ActivityManagerService.java:14713) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2703) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2674) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStart(ProcessList.java:2204) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.lambda$startProcessLocked$0$ProcessList(ProcessList.java:2125) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList$$ExternalSyntheticLambda1.run(Unknown Source:22) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.handleCallback(Handler.java:938) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.dispatchMessage(Handler.java:99) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loopOnce(Looper.java:214) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loop(Looper.java:304) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.HandlerThread.run(HandlerThread.java:67) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.ServiceThread.run(ServiceThread.java:44) 2023/05/15 10:52:57.651 1083 1172 Error AppOps Cannot setMode 2023/05/15 10:52:57.651 1083 1172 Error AppOps java.lang.SecurityException: Specified package com.oculus.browser under uid 90086 but it is not 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4621) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4513) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2784) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2770) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.setAppOpMode(ActivityManagerService.java:14775) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.onTopAppStatusChanged(ActivityManagerService.java:14719) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2703) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2674) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStart(ProcessList.java:2204) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.lambda$startProcessLocked$0$ProcessList(ProcessList.java:2125) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList$$ExternalSyntheticLambda1.run(Unknown Source:22) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.handleCallback(Handler.java:938) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.dispatchMessage(Handler.java:99) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loopOnce(Looper.java:214) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loop(Looper.java:304) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.HandlerThread.run(HandlerThread.java:67) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.ServiceThread.run(ServiceThread.java:44) 2023/05/15 10:52:57.651 1083 1172 Error AppOps Cannot setMode 2023/05/15 10:52:57.651 1083 1172 Error AppOps java.lang.SecurityException: Specified package com.oculus.browser under uid 90086 but it is not 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4621) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4513) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2784) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2770) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.setAppOpMode(ActivityManagerService.java:14775) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.onTopAppStatusChanged(ActivityManagerService.java:14724) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2703) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2674) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStart(ProcessList.java:2204) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.lambda$startProcessLocked$0$ProcessList(ProcessList.java:2125) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList$$ExternalSyntheticLambda1.run(Unknown Source:22) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.handleCallback(Handler.java:938) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.dispatchMessage(Handler.java:99) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loopOnce(Looper.java:214) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loop(Looper.java:304) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.HandlerThread.run(HandlerThread.java:67) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.ServiceThread.run(ServiceThread.java:44) 2023/05/15 10:52:57.652 1083 1172 Info ActivityManager Start proc 28240:com.oculus.browser:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:49/u0ai86 for {com.oculus.browser/org.chromium.content.app.SandboxedProcessService0:49} 2023/05/15 10:52:57.668 948 1452 Error Tracking SubmapRecords: findSubmapId found 2 submap records hold the same query krHandle 2023/05/15 10:52:57.680 28240 28240 Error cessService0:4 Not starting debugger since process cannot load the jdwp agent. 2023/05/15 10:52:57.614 0 0 Info binder 28240:28240 ioctl 40046210 7fc6e6fd54 returned -22 2023/05/15 10:52:57.700 1083 6246 Debug CompatibilityChangeReporter Compat change id reported: 168419799; UID 10058; state: DISABLED 2023/05/15 10:52:57.708 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 171979766; UID 90086; state: ENABLED 2023/05/15 10:52:57.726 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 175409949; UID 90086; state: DISABLED 2023/05/15 10:52:57.727 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 175409951; UID 90086; state: DISABLED 2023/05/15 10:52:57.729 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 175409950; UID 90086; state: DISABLED 2023/05/15 10:52:57.730 28240 28240 Debug NetworkSecurityConfig Using Network Security Config from resource 0_resource_name_obfuscated debugBuild: false 2023/05/15 10:52:57.733 28240 28240 Debug NetworkSecurityConfig Using Network Security Config from resource 0_resource_name_obfuscated debugBuild: false 2023/05/15 10:52:57.748 28240 28240 Info cr_SplitCompatApp Launched version=112.0.5615.136 minSdkVersion=25 isBundle=false processName=com.oculus.browser:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:49 isIsolated=true 2023/05/15 10:52:57.750 948 27901 Info Tracking CONSTELLATION:VISION_STATUS: fb11304f9b41e4ec (R): BlobDetection:[#BlobsDetected=(15.24, 6.50)]Matching:[MatchSuccess=1.000, MatchCost=(0.00142, 0.00000), #MatchedBlobs=(8.10, 3.35), #MatchedLeds=(6.94, 0.12), RematchM=0.000, SkipRefine=0.000] MatchMethod:[Prox=1.000, ConstBrute=0.000, UnconstBrute=0.000] MatchResets[AnomBlobSize=0.000, SharedMatch=0.000, DenseReacq=0.000] | Fusion:[FusionError=0.000, ImuFromCamMs=(8.902, 1.609), RematchF=0.004] FusionUpdates:[Successful=0.140, Reliable=0.140, TightFusion=0.140, FullPose=0.000, StaticPrior=0.860, StaticForHandTrans=0.860, PoseUpdateMD=(0.0000, 0.0000)] FusionResets[6DoFReset=0.000, ResetSuccess=0.000] FusionStatus[HasPosition=1.000, HasVelocity=1.000] 2023/05/15 10:52:57.754 28240 28240 Info cr_ChildProcessService Creating new ChildProcessService pid=28240 2023/05/15 10:52:57.757 24304 24329 Info cr_ChildProcessConn onServiceConnected: org.chromium.content.app.SandboxedProcessService0 2023/05/15 10:52:57.758 568 568 Error SELinux avc: denied { find } for pid=28240 uid=90086 name=content_capture scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:content_capture_service:s0 tclass=service_manager permissive=0 2023/05/15 10:52:57.763 28240 28253 Error cr_ChromiumAndroidLinker ReserveAddressWithHint: Address range starting at 0x76be260000 was not free to use 2023/05/15 10:52:57.766 1083 6246 Info ActivityManager Killing 28240:com.oculus.browser:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:49/u0a58i-8914 (adj 0): isolated not needed This has been reported for a few years and several times on the Meta community forum, Stackoverflow and Unity developer forum but without an answer to workaround it or to explain why it's not possible to achieve. Something in the Meta Quest web browser prevents the intent action to open the application. A feedback from the Developper Team of the Meta Quest web browser would be great, at least to say "we cannot support this because [...]".2.6KViews3likes3CommentsOpen Oculus Quest application from Oculus Browser (deep link)
I'd like to use deep linking (or what one could call custom URI scheme or custom application Protocol) from the Oculus Browser to open my Oculus Unity application. Here's what the doc states about deep linking: developer.oculus.com/documentation/unity/ps-deep-linking/ Apparently another developer attempted to do that on Oculus Go unsuccessfuly, because the Oculus Browser blocks the deep link opening: forums.oculusvr.com/developer/discussion/69199/oculus-go-opening-application-from-the-browser Here's what Unity doc states about deep lin on Android: connect.unity.com/p/deep-linking-on-android-ios-with-unity And it seems it gets blocked on Oculus Quest Web Browser. Anyone already achieved this with succes ? If it's not supported by the Oculus Web browser, could this be supported in a near future please? N.B: sorry for the screen captures instead of code paste but the code contains URLs and I'm not allowed to post URLs on the forum Here's what I can see in the "Android Device Monitor" Log when I click a link hosted on 192.168.1.23:5000 : Here is the application AndroidManifest.xml from the Android exported gradle project from Unity: android:name="com.vizua.launcher.UnityPlayerActivity" is the right Activity path and matches the "Player Settings > Others Settings > Identification > Package Nale" in Unity.6.2KViews6likes5Comments[Feature Request] Allow appps to be launched via intent-filters from Oculus Browser
I think it would be great if the Oculus Browser would support launch intents: https://developer.android.com/guide/components/intents-filters At least to my knowledge this isn't currently supported and app deep linking on Quest only works between apps, but not through a link displayed in a browser like on smartphones.2.7KViews5likes4Comments