Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
to_the_cosmic_end's avatar
4 months ago

Extra runtime permission visible in App Settings

Hello, I am testing my app, and I only use WRITE_EXTERNAL_STORAGE for media access. However, in Headset Settings → Privacy & Security → Installed Apps → [my app], I see that three permissions have been added. My manifest looks like this:

<!--?xml version="1.0" encoding="utf-8" standalone="no"?-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.app" android:installlocation="auto">
  <uses-permission android:name="android.permission.INTERNET" tools:node="merge">
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">

  <uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove">
  <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" tools:node="remove">
  <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove">
  <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove">
  <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" tools:node="remove">
  <uses-permission android:name="android.permission.READ_MEDIA_IMAGE" tools:node="remove">
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" tools:node="remove">
  <application android:name=".AppDelegate" android:label="@string/app_name" android:networksecurityconfig="@xml/network_security_config" android:requestlegacyexternalstorage="true" android:icon="@mipmap/app_icon" android:allowbackup="false">
    <activity android:theme="@style/Theme.AppCompat.DayNight.NoActionBar" android:configchanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:launchmode="singleTask" android:name="com.unity3d.player.UnityPlayerGameActivity" android:excludefromrecents="true" android:exported="true" android:screenorientation="landscape">
      <intent-filter>
        <action android:name="android.intent.action.MAIN">
        <category android:name="android.intent.category.LAUNCHER">
        <category android:name="com.oculus.intent.category.VR">
      </category></category></action></intent-filter>
      <meta-data android:name="com.oculus.vr.focusaware" android:value="true">
    </meta-data></activity>
    <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false">
    <meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only">
    <meta-data android:name="com.oculus.supportedDevices" android:value="quest|quest2|questpro|quest3|quest3s" tools:replace="android:value">
    <meta-data android:name="com.oculus.ossplash.background" android:value="black">
    <meta-data android:name="com.oculus.telemetry.project_guid" android:value="xxx">
  </meta-data></meta-data></meta-data></meta-data></meta-data></application>
  <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true">
</uses-feature></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></manifest>

and this is what I see in the app settings:

As you can see, the "Photos and videos" and "Music and audio" permissions are also listed, even though I only requested the "Storage" permission. In my testing, I also found that disabling the "Photos & videos" toggle causes my app to stop working, even if the "Storage" permission remains enabled.

I believe that seeing multiple permissions in the list may cause users to lose confidence and feel uncertain about granting them—especially "Music and audio," which is unrelated to my app.

1 Reply

Replies have been turned off for this discussion
  • append  " tools:node="remove" " to remove a permission in your androidmanifest.xml.  

    Example:

     <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" tools:node="remove"/> 

    EDIT: On second thought, your XML seems to be slightly malformed, which may be causing issues.  

    Here's mine, which has all the media permissions removed:

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
      <application android:label="@string/app_name" android:icon="@mipmap/app_icon" android:allowBackup="false">
        <activity android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:launchMode="singleTask" android:name="com.unity3d.player.UnityPlayerActivity" android:excludeFromRecents="true" android:exported="true">
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="com.oculus.intent.category.VR" />
          </intent-filter>
          <meta-data android:name="com.oculus.vr.focusaware" android:value="true" />
        </activity>
        <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
        <meta-data android:name="com.oculus.ossplash.background" android:value="black" />
        <meta-data android:name="com.oculus.telemetry.project_guid" android:value="xxxxxxxxx" />
        <meta-data android:name="com.oculus.supportedDevices" android:value="quest2|questpro|quest3|quest3s" tools:replace="android:value" />
      </application>
      <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" />
       <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/> 
       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
       <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove"/>
       <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" tools:node="remove"/> 
       <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove"/> 
       <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove"/>
       <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" tools:node="remove"/>
       <uses-permission android:name="android.permission.READ_MEDIA_IMAGE" tools:node="remove"/>
    </manifest>