Xamarin Android谷歌地图应用程序地图为空且无错误

Xamarin Android谷歌地图应用程序地图为空且无错误,android,google-maps,xamarin,Android,Google Maps,Xamarin,我正在开发一款单机器人android应用程序。我已经添加了带有片段的谷歌地图,但是地图不会显示,我也不会抛出任何错误 我的Axml代码: <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.Ma

我正在开发一款单机器人android应用程序。我已经添加了带有片段的谷歌地图,但是地图不会显示,我也不会抛出任何错误

我的Axml代码:

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />
更新 Logcat现在显示以下警告

 04-04 09:30:07.355 W/ctxmgr  ( 4204): [AclManager]checkPermissionTypeStatus: no inject permission for { uid=10019, packageName=com.google.android.gms }. Returned permission was: PACKAGE_NOT_WHITELISTED for context name=POWER_CONNECTION, account=account#-517948760#
 04-04 09:30:07.358 W/ctxmgr  ( 4204): [AclManager]checkPermissionTypeStatus: no inject permission for { uid=10019, packageName=com.google.android.gms }. Returned permission was: PACKAGE_NOT_WHITELISTED for context name=POWER_CONNECTION, account=account#-517948760#
尝试添加:

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />


在AndroidManifest.xml中的
中,确保提供给Google API控制台的哈希是正确的,您可以提供两个哈希,一个用于debug.keystore,另一个用于生产密钥库

要检查哈希是否正确,请使用调试/生产密钥库运行应用程序,检查此代码段的日志输出(它是Java格式的,但我相信Xamarin中也有类似的API),并将其与API控制台中的API进行比较:

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}
以下是c#实现


运行应用程序时,您的
adb logcat
会说什么?它收到的密钥很好。我从logcat中删除了密钥,但没有看到任何错误。你的mapFrag.Map是否为空?不,不是。map和mapFrag值不为空。你搞定了这帮我找到了问题谢谢@Mina You rock.PS我要等18个小时才能奖励你!。谢谢,我很高兴helpedI添加了这个,但是没有用。非常感谢你@山药,如果你没有补充说它也不起作用:)
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}
 private void CheckSignatureHash()
  {
   try
     {
                PackageInfo info = PackageManager.GetPackageInfo("com.package.name", PackageInfoFlags.Signatures);
                string hash = "";
                foreach (var sign in info.Signatures)
                {
                    MessageDigest md = MessageDigest.GetInstance("SHA");
                    md.Update(sign.ToByteArray());
                    hash += Base64.EncodeToString(md.Digest(), Base64Flags.Default);
                    Console.WriteLine("***********************************");
                    Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                    Console.WriteLine("KeyHash:" + hash);
                    Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                    Console.WriteLine("***********************************");
                }

                //Toast.MakeText(this, hash, ToastLength.Short).Show();
     }
   catch (PackageManager.NameNotFoundException e)
     {
     }
  catch (NoSuchAlgorithmException e)
    {   
    }
}