Xamarin Android谷歌地图应用程序地图为空且无错误
我正在开发一款单机器人android应用程序。我已经添加了带有片段的谷歌地图,但是地图不会显示,我也不会抛出任何错误 我的Axml代码: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
<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)
{
}
}