0

I am using xamarin.forms for my android project with help of visual studio 2022. When I run the code to my mobile android 13, I am not getting popup permission for android 13. I just update the androidtargetsdkversion from 29 to 33. Here is my code: AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.myapp.app" android:versionCode="23" android:versionName="12.6.1">
<uses-sdk android:minSdkVersion="24" android:targetSdkVersion="33" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:allowBackup="false" android:requestLegacyExternalStorage="true" android:label="FieldDirect" android:largeHeap="true">
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/icon_transparent" />
<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/brown" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="Adfsgrgsdvewsdvevwdvsdvsdv" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<service android:name="crc6494e14b9856016c30.PNFirebaseMessagingService" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.myapp.app.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_path" />
</provider>
</application>
</manifest>

App.xaml.cs:

if (context != null)
 {
 if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
 {
 if ((Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.Camera) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.ReadExternalStorage) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.WriteExternalStorage) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.AccessCoarseLocation) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.AccessFineLocation) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.CallPhone) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.ReadPhoneState) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.ReadPhoneNumbers) != Android.Content.PM.Permission.Granted))
 {

 ActivityCompat.RequestPermissions(context, new String[] { Manifest.Permission.Camera,
 Manifest.Permission.ReadExternalStorage,
 Manifest.Permission.WriteExternalStorage,
 Manifest.Permission.AccessCoarseLocation,
 Manifest.Permission.AccessFineLocation,
 Manifest.Permission.ReadPhoneNumbers,
 Manifest.Permission.ReadPhoneState,
 Manifest.Permission.CallPhone }, 100);

 }
 }
 }

Anyone please help me to resolve this issue

Manthiram
  • 149
  • 2
  • 13

1 Answers1

0

When I run the code to my mobile android 13, I am not getting popup permission for android 13. I just update the androidtargetsdkversion from 29 to 33.

About READ, Android 13 has some new changes:

If your app targets Android 13 or higher and needs to access media files that other apps have created, you must request one or more of the following granular media permissions instead of the READ_EXTERNAL_STORAGE permission.

For more details you can refer to this: Granular media permissions.

In addition, you can see Alexander's answer in this post. That sums it up well. Wish it can help you.

Jianwei Sun - MSFT
  • 2,289
  • 1
  • 3
  • 7