Search code examples
androidnativescriptangular2-nativescriptnativescript-angular

ActivityCompat always undefined on android.support.v4.app


Recently I have created native script angular app. I'm trying to get read permissions for SMS but getting below error

ERROR TypeError: Cannot read property 'requestPermissions' of undefined

(<any>android.support.v4.app.ActivityCompat).requestPermissions(app.android.context,
        [(<any>android).Manifest.permission.RECEIVE_SMS], REQUEST_REQUIRED_PERMISSIONS);

added below lines to manifest.xml

<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>

I have tried nativescript-permissions plugin it is working fine but I wanted to try without plugin

Update: Working code

    const activity = app.android.foregroundActivity || app.android.startActivity;
    (<any>androidx.core.app.ActivityCompat).requestPermissions(activity,
        [(<any>android).Manifest.permission.RECEIVE_SMS], REQUEST_REQUIRED_PERMISSIONS);

    // or
    activity.requestPermissions(
        [(<any>android).Manifest.permission.RECEIVE_SMS], REQUEST_REQUIRED_PERMISSIONS);

Solution

  • With AndroidX support in {N} 6 and above, android.support.v4.app.ActivityCompat no longer exists. It should be androidx.core.app.ActivityCompat.