Filter sebelumnya hanya menghapus dari app manifest, tapi expo-image-picker menyuntikkan permission lewat library manifest-nya sendiri saat Gradle build.
38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
const { withAndroidManifest } = require('@expo/config-plugins');
|
|
|
|
const BLOCKED_PERMISSIONS = [
|
|
'android.permission.READ_MEDIA_IMAGES',
|
|
'android.permission.READ_MEDIA_VIDEO',
|
|
];
|
|
|
|
const withRemoveMediaPermissions = (config) =>
|
|
withAndroidManifest(config, (config) => {
|
|
const manifest = config.modResults.manifest;
|
|
|
|
// Pastikan xmlns:tools ada di manifest root
|
|
if (!manifest.$['xmlns:tools']) {
|
|
manifest.$['xmlns:tools'] = 'http://schemas.android.com/tools';
|
|
}
|
|
|
|
// Hapus entry yang ada (apapun atributnya)
|
|
const existing = manifest['uses-permission'] ?? [];
|
|
manifest['uses-permission'] = existing.filter(
|
|
(perm) => !BLOCKED_PERMISSIONS.includes(perm.$?.['android:name'])
|
|
);
|
|
|
|
// Tambahkan entry dengan tools:node="remove" agar Gradle merger
|
|
// membuang permission ini dari SEMUA sumber (termasuk library manifests)
|
|
for (const permission of BLOCKED_PERMISSIONS) {
|
|
manifest['uses-permission'].push({
|
|
$: {
|
|
'android:name': permission,
|
|
'tools:node': 'remove',
|
|
},
|
|
});
|
|
}
|
|
|
|
return config;
|
|
});
|
|
|
|
module.exports = withRemoveMediaPermissions;
|