Request Android Permissions
This Gist is for Tutorial Request All Permissions Android React Native
Outside of React Native App. You can also use the AndroidManifest.xml permission request.
But only take all <uses-permission/>
This Gist is for Tutorial Request All Permissions Android React Native
Outside of React Native App. You can also use the AndroidManifest.xml permission request.
But only take all <uses-permission/>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myapp"> | |
<!-- All Permission --> | |
<uses-permission android:name="android.permission.INTERNET" /> | |
<uses-permission android:name="android.permission.READ_CALENDAR" /> | |
<uses-permission android:name="android.permission.WRITE_CALENDAR" /> | |
<uses-permission android:name="android.permission.CAMERA" /> | |
<uses-permission android:name="android.permission.READ_CONTACTS" /> | |
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> | |
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> | |
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | |
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> | |
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> | |
<uses-permission android:name="android.permission.RECORD_AUDIO" /> | |
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> | |
<uses-permission android:name="android.permission.CALL_PHONE" /> | |
<uses-permission android:name="android.permission.READ_CALL_LOG" /> | |
<uses-permission android:name="android.permission.WRITE_CALL_LOG" /> | |
<uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" /> | |
<uses-permission android:name="android.permission.USE_SIP" /> | |
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> | |
<uses-permission android:name="android.permission.BODY_SENSORS" /> | |
<uses-permission android:name="android.permission.SEND_SMS" /> | |
<uses-permission android:name="android.permission.RECEIVE_SMS" /> | |
<uses-permission android:name="android.permission.READ_SMS" /> | |
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" /> | |
<uses-permission android:name="android.permission.RECEIVE_MMS" /> | |
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> | |
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> | |
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> | |
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" /> | |
<uses-permission android:name="android.permission.ACCEPT_HANDOVER" /> | |
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> | |
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" /> | |
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> | |
<uses-permission android:name="android.permission.UWB_RANGING" /> | |
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> | |
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
</application> | |
</manifest> |
// React Native Uses Permission | |
import React from 'react'; | |
import {Button, Linking, PermissionsAndroid, ScrollView} from 'react-native'; | |
const PERMISSIONS_TYPE = [ | |
'READ_CALENDAR', | |
'WRITE_CALENDAR', | |
'CAMERA', | |
'READ_CONTACTS', | |
'WRITE_CONTACTS', | |
'GET_ACCOUNTS', | |
'ACCESS_FINE_LOCATION', | |
'ACCESS_COARSE_LOCATION', | |
'ACCESS_BACKGROUND_LOCATION', | |
'RECORD_AUDIO', | |
'READ_PHONE_STATE', | |
'CALL_PHONE', | |
'READ_CALL_LOG', | |
'WRITE_CALL_LOG', | |
'ADD_VOICEMAIL', | |
'USE_SIP', | |
'PROCESS_OUTGOING_CALLS', | |
'BODY_SENSORS', | |
'SEND_SMS', | |
'RECEIVE_SMS', | |
'READ_SMS', | |
'RECEIVE_WAP_PUSH', | |
'RECEIVE_MMS', | |
'READ_EXTERNAL_STORAGE', | |
'WRITE_EXTERNAL_STORAGE', | |
'BLUETOOTH_CONNECT', | |
'BLUETOOTH_SCAN', | |
'BLUETOOTH_ADVERTISE', | |
'ACCESS_MEDIA_LOCATION', | |
'ACCEPT_HANDOVER', | |
'ACTIVITY_RECOGNITION', | |
'ANSWER_PHONE_CALLS', | |
'READ_PHONE_NUMBERS', | |
'UWB_RANGING', | |
]; | |
async function requestPermission(PERMISSION_TYPE) { | |
try { | |
const granted = await PermissionsAndroid.request( | |
PermissionsAndroid.PERMISSIONS[PERMISSION_TYPE], | |
); | |
if (granted === PermissionsAndroid.RESULTS.GRANTED) { | |
console.log(`You can use ${PERMISSION_TYPE}`); | |
} else { | |
console.log(`${PERMISSION_TYPE} permission denied`); | |
} | |
} catch (err) { | |
console.warn(err); | |
} | |
} | |
export default function App() { | |
return ( | |
<ScrollView> | |
{PERMISSIONS_TYPE.map((TYPE, index) => ( | |
<Button | |
key={index} | |
color={index % 2 === 0 ? 'dodgerblue' : 'blue'} // to make odd event button color | |
title={`Allow ${TYPE}`} | |
onPress={() => requestPermission(TYPE)} | |
/> | |
))} | |
<Button | |
color="black" | |
title="Open Settings" | |
onPress={() => Linking.openSettings()} // opens settings your app | |
/> | |
</ScrollView> | |
); | |
} |