Google play 強制API 等級 26 Xamarin解決方法 強制跳出視窗取得權限

你的應用程式目前的目標 API 等級是 24,但最低目標 API 等級必須為 26,才能確保應用程式採用最新的 API,讓安全性與執行效能達到最佳狀態。請將最低目標 API 等級調整為 26。


天啊Google 硬起來了,強制APP的目標版本一定要26 (Android 8.0)  ,瘋狂的 8.0 高版本
Xamarin 開發的權限在AndroidManifest.xml 幾乎完全失效,就算有寫權限還是沒開,幹。


變得必須要強制跳出使用者點選同意的視窗,才能取得權限

這時候解救方法就是
先在專案按下右鍵,選擇 [管理NuGet套件]



搜尋 Xamarin.Android.Support.v7.AppCompat

如果遇到如下錯誤

嚴重性 程式碼 說明 專案 檔案 隱藏項目狀態
錯誤 無法安裝封裝 'Xamarin.Android.Support.v7.AppCompat 28.0.0'。您正嘗試將此封裝安裝到以 'MonoAndroid,Version=v5.1' 為目標的專案,但該封裝不包含任何與架構相容的組件參考或內容檔。如需詳細資訊,請連絡封裝作者。 0

請[專案\屬性]更改如下地方,需超越Android 6.0,且需要重新啟動 Visual Studio 重要



如下程式碼可以開啟強制取得權限,可加於OnCreate中
const int RequestLocationId = 0;

 string[] PermissionsLocation =
                {
                    Android.Manifest.Permission.AccessCoarseLocation,
                    Android.Manifest.Permission.AccessFineLocation
                };
                ActivityCompat.RequestPermissions(this,PermissionsLocation, RequestLocationId);



MainActivity  後面加入 ActivityCompat.IOnRequestPermissionsResultCallback

如下
public class MainActivity : Activity, ActivityCompat.IOnRequestPermissionsResultCallback



這邊接收使用者給予權限了沒,沒給權限不給使用。
 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
        {
            switch (requestCode)
            {
                case RequestLocationId:
                    {
                        if (grantResults[0] == Permission.Denied)
                        {
                            Toast.MakeText(this, "需要權限才能使用", ToastLength.Long).Show();
                            this.FinishAffinity();
                        }
                    }
                    break;
            }
        }







留言

這個網誌中的熱門文章

使用藍牙BLE 讓iphone android 連接樹莓派3 raspberry pi 3

四軸飛行器:飛控板DIY

小四軸飛行器:驅動馬達