Google Play recently announced a new policy that Android apps should not request the READ_SMS
permission amongst others, unless the app acts as a default calling or texting app. The Expo client, standalone apps built with expo build:android
, and ExpoKit projects request the READ_SMS
permission through SDK 31. This permission was used by the Expo.SMS API to return whether a user sent or canceled a text message through the API, and we have been working on removing it.
If you received an email from Google Play titled, āAction required: Update your app to comply with Google Play Permissions policyā, continue reading to learn how to update your app.
Timeline
Google has asked for apps to be updated or for an extension to be granted by January 9, 2019. If Google grants you an extension, you will have until Match 9, 2019 to update your app. Instructions on how to update your app are described below.
If you need more time to update your app, you can request an extension through the Permissions Declaration form and on one of the questions, choose āOption 1: Additional Time. Youāll have until March 9, 2019 to remove unapproved SMS / Call Log permissions.ā.
Updating your app to remove the READ_SMS
permission
Apps that donāt use the Expo.SMS
API
SDK 32: If your app doesnāt use the Expo.SMS
API, you can rebuild your APK without the permission. The standalone app builders have been updated to produce APKs without this permission. Run expo build:android
and submit the new APK to Google Play.
SDK 31 and older: For standalone apps built with expo build:android
, set android.permissions
to an empty array in your app.json file like so:
{
"android": {
"permissions": []
}
}
Rebuild your app with expo build:android
and submit the new APK to Google Play.
For ExpoKit apps, edit app/src/main/AndroidManifest.xml
and add the following tag within the existing <manifest>
tag:
<uses-permission tools:node="remove" android:name="android.permission.READ_SMS" />
Then build your app and submit the APK.
Apps that use the Expo.SMS
API
If your app uses the Expo.SMS
API, you can either change your app to not use it on Android and follow the above instructions, or you can upgrade to Expo SDK 32, which will no longer request the READ_SMS
permission.
As part of this change, in SDK 32 and beyond, Expo.SMS.sendSMSAsync
will return a promise that resolves to { result: 'unknown' }
on Android, since without the permission there is no way to know whether the user sent the message.
Until you have had a chance to update your app, we recommend requesting an extension with Google as soon as possible using the Permissions Declaration form. The extension lasts through March 9, 2019.