Files
Schnappix/plugins/withRemoveMediaPermissions.js

43 lines
1.4 KiB
JavaScript

const { withAndroidManifest } = require('@expo/config-plugins');
const permissionsToRemove = [
'android.permission.READ_MEDIA_AUDIO',
'android.permission.READ_MEDIA_IMAGES',
'android.permission.READ_MEDIA_VIDEO',
'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',
'android.permission.READ_EXTERNAL_STORAGE',
'android.permission.WRITE_EXTERNAL_STORAGE'
];
module.exports = function withRemoveMediaPermissions(config) {
return withAndroidManifest(config, async (config) => {
let androidManifest = config.modResults.manifest;
if (!androidManifest['uses-permission']) {
androidManifest['uses-permission'] = [];
}
// Make sure we have the tools namespace
if (!androidManifest.$['xmlns:tools']) {
androidManifest.$['xmlns:tools'] = 'http://schemas.android.com/tools';
}
// Remove any existing declarations of these permissions in the app manifest
androidManifest['uses-permission'] = androidManifest['uses-permission'].filter(
p => !permissionsToRemove.includes(p.$['android:name'])
);
// Add explicit tools:node="remove" directives to block libraries from adding them
permissionsToRemove.forEach(permissionName => {
androidManifest['uses-permission'].push({
$: {
'android:name': permissionName,
'tools:node': 'remove'
}
});
});
return config;
});
};