Search code examples
buildpermissionsandroid-source

how to grand permission to priv-app in AOSP built


I want add different default launcher in my AOSP A11 builds. I have a selfbuild apk which is located in /prebuilts/prebuitapks. I hav ecreated a android.mk

    LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := Peace-Launcher
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := Peace-Launcher.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)


include $(CLEAR_VARS)
LOCAL_MODULE := privapp-permissions-com.harvey186.peace.dev.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)

and a permission.xml

<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <privapp-permissions package="com.harvey186.peace.dev">
        <permission name="android.permission.WRITE_SYNC_SETTINGS" />
        <permission name="android.permission.READ_SYNC_SETTINGS" />
        <permission name="android.permission.WRITE_SETTINGS" />
        <permission name="android.permission.ACCESS_NETWORK_STATE" />
        <permission name="android.permission.ACCESS_WIFI_STATE" />
        <permission name="android.permission.BLUETOOTH" />
        <permission name="android.permission.BLUETOOTH_ADMIN" />
        <permission name="android.permission.CALL_PHONE" />
        <permission name="android.permission.SET_WALLPAPER" />
        <permission name="android.permission.SET_WALLPAPER_HINTS" />
        <permission name="android.permission.BIND_APPWIDGET" />
        <permission name="android.permission.READ_EXTERNAL_STORAGE" />
        <permission name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <permission name="android.permission.REQUEST_DELETE_PACKAGES" />
        <permission name="android.permission.READ_DEVICE_CONFIG" />
        <permission name="android.permission.QUERY_ALL_PACKAGES" />
        <permission name="android.permission.MANAGE_DOCUMENTS" />
        <permission name="android.permission.READ_EXTERNAL_STORAGE"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    </privapp-permissions>
</permission>

but after building/flashing/booting the app sill has none of these permissions. But it is needed that the app has access to 'files and media'

What am I doing wrong ?


Solution

  • android.permission.READ_EXTERNAL_STORAGE and android.permission.WRITE_EXTERNAL_STORAGE are runtime permissions.

    You should grant runtime permission like this:

    <exceptions>
        <exception
                package="com.google.android.apps.pixelmigrate">
            <!-- External storage -->
            <permission name="android.permission.READ_EXTERNAL_STORAGE" fixed="false"/>
            <permission name="android.permission.WRITE_EXTERNAL_STORAGE" fixed="false"/>
            <!-- Contacts -->
            <permission name="android.permission.READ_CONTACTS" fixed="false"/>
            <permission name="android.permission.WRITE_CONTACTS" fixed="false"/>
            <!-- Call logs -->
            <permission name="android.permission.READ_CALL_LOG" fixed="false"/>
            <permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
            <!-- SMS -->
            <permission name="android.permission.RECEIVE_SMS" fixed="false"/>
            <permission name="android.permission.READ_PHONE_NUMBERS" fixed="false"/>
        </exception>
    </exceptions>
    

    privapp-permissions is used for installed privileged permission. They are different.