Xamarin Android谷歌地图应用程序地图是空白的,没有错误

我正在开发Monodroid安卓应用.我已经添加了带有片段的谷歌地图,但地图不会显示,我也没有收到任何错误.

我的Axml代码

<fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

活动代码

protected async override void OnResume()
    {
        base.OnResume();


        tblLocations location = Nav.GetAndRemoveParameter<tblLocations>(Intent);
        LatLng latLng = new LatLng(location.Latitude,location.Longitude);
        CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
        builder.Target(latLng);
        builder.Zoom(5);

        CameraPosition cameraPosition = builder.Build();
        CameraUpdate cUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);

        mapFrag = (MapFragment)FragmentManager.FindFragmentById(Resource.Id.map);
        map = mapFrag.Map;
        if (map != null)
        {
            map.MoveCamera(cUpdate);
        }
    }

我意识到这是API密钥,但我在这里缺少什么?

记录CAT输出

04-01 16:40:24.662 D/ChimeraFileApk(20730): Classloading successful. Optimized code found.
    04-01 16:40:24.730 E/NEW_BHD (20811): Battery Power Supply logging Daemon start!!!!!
    04-01 16:40:24.730 E/NEW_BHD (20811): Cannot run on production devices!
    04-01 16:40:24.755 I/Google Maps Android API(20730): Google Play services client version: 848700004-01 16:40:24.755 I/Google Maps Android API(20730): Google Play services client version: 8487000
    04-01 16:40:24.764 I/Google Maps Android API(20730): Google Play services package version: 8703436
    04-01 16:40:24.804 I/art     (20530): CollectorTransition marksweep + semispace GC freed 471(-32KB) AllocSpace objects,0(0B) LOS objects,24% free,7MB/9MB,paused 16.348ms total 16.348ms
    04-01 16:40:25.088 D/VoldConnector( 2225): SND -> {10 volume mkdirs /storage/emulated/0/Android/data/asked.askeduniversalremote/cache/}
    04-01 16:40:25.220 D/Mono    (20730): Assembly Ref addref Xamarin.GooglePlayServices.Maps[0xb9b18688] -> Xamarin.GooglePlayServices.Basement[0xb9b148d0]: 2
    04-01 16:40:25.283 I/b       (20730): Sending API token request.
    04-01 16:40:25.316 I/Keyboard.Facilitator( 3831): onFinishinput()
    04-01 16:40:25.357 I/LaunchCheckinHandler( 2225): displayed asked.askeduniversalremote/md5d1d3b2ca018abe66d5a9f8b4db614c6f.ViewOtherLocationOnMapActivity,wp,ca,947
    04-01 16:40:25.357 I/ActivityManager( 2225): displayed asked.askeduniversalremote/md5d1d3b2ca018abe66d5a9f8b4db614c6f.ViewOtherLocationOnMapActivity: +947ms
    04-01 16:40:25.372 E/NetlinkEvent(  299): NetlinkEvent::Findparam(): Parameter 'UID' not found
    04-01 16:40:25.612 I/b       (20730): Received API Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    04-01 16:40:25.612 I/c       (20730): Scheduling next attempt in 431700 seconds.
    04-01 16:40:25.615 I/d       (20730): Saved auth token
    04-01 16:40:25.719 I/SFPerftracer(  258):      triggers: (rate: 7:437) (compose: 1:20) (post: 0:21) (render: 2:51) (6:7515 frames) (7:10501)
    04-01 16:40:25.719 D/SFPerftracer(  258):        layers: (3:12) (FocusedStackFrame (0xb782cb78): 0:383)* (DimLayer (0xb786b8f0): 0:2)* (StrictModeFlash (0xb7804b60): 0:50)* (StatusBar (0xb780a350): 0:2953) (com.android.systemUI.ImageWallpaper (0xb781e148): 0:163)* (NavigationBar (0xb78a5528): 0:402) (DimLayer (0xb7892338): 1:14)* (asked.askeduniversalremote/md5d1d3b2ca018abe66d5a9f8b4db614c6f.WaitTimeActivity (0xb789fa28): 0:51)- (asked.askeduniversalremote/md5d1d3b2ca018abe66d5a9f8b4db614c6f.ViewOtherSitesActivity (0xb78aef90): 0:108)- (asked.askeduniversalremote/md5d1d3b2ca018abe66d5a9f8b4db614c6f.ViewOtherLocationOnMapActivity (0xb789f9e0): 7:25) 
    04-01 16:40:27.516 D/audio_hw_primary(  303): out_standby: enter: stream (0xb7690308) usecase(1: low-latency-playback)04-01 16:40:27.516 D/audio_hw_primary(  303): out_standby: enter: stream (0xb7690308) usecase(1: low-latency-playback)
    04-01 16:40:27.616 D/hardware_info(  303): hw_info_append_hw_type : device_name = speaker04-01 16:40:27.616 D/hardware_info(  303): hw_info_append_hw_type : device_name = speaker
    04-01 16:40:29.766 E/NEW_BHD (20866): Cannot run on production devices!
    04-01 16:40:31.127 D/Mono    (20730): [0x9e1ff930] worker finishing
    04-01 16:40:31.167 D/WifiStateMachine( 2225): starting scan for 
    04-01 16:40:34.778 D/SLPC    ( 3416): slpc_poll_loop(): handled 1
    04-01 16:40:34.778 D/SLPC    ( 3416): slpc_poll_handle_event(): transition
    04-01 16:40:34.778 D/SLPC    ( 3416): slpc_poll_loop(): about to poll...
    04-01 16:40:34.778 D/sensorhub( 3416): sensorhub_poll() polling...
    04-01 16:40:34.796 E/NEW_BHD (20867): Battery Power Supply logging Daemon start!!!!!
    04-01 16:40:34.797 E/NEW_BHD (20867): Cannot run on production devices!
    04-01 16:40:35.292 D/NetlinkSocketobserver( 2225): NeighborEvent{elapsedMs=6311820,192.168.105.1,[C86C870B13EB],RTM_NEWNEIGH,NUD_STALE}
    04-01 16:40:35.783 V/AlarmManager( 2225): sending alarm {58361af type 2 *walarm*:com.motorola.slpc.ALARM_STOWED}
    04-01 16:40:35.786 D/ModalityService( 3416): StowedListener(): callback onStowedChange() -> 2
    04-01 16:40:35.787 V/AlarmManager( 2225): done {58361af,*walarm*:com.motorola.slpc.ALARM_STOWED} [4ms]
    04-01 16:40:35.787 D/ModalityManager( 5416): onStowedChange() -> 2,package: com.motorola.actions

UPDATE
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,account=account#-517948760#

解决方法

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

要检查散列是否正确,请使用debug / production 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());
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android岛屿数量算...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Andro...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android数据压缩的方法是什么”文章能帮助大家解决疑惑...
这篇“Android怎么使用Intent传大数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅...
本文小编为大家详细介绍“Android事件冲突怎么解决悬浮窗拖拽问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android事件冲突怎么解决悬浮窗拖拽问题”文...
这篇文章主要介绍了Android拼接如何实现动态对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android拼接如何实现动态对象文...
今天小编给大家分享一下Android全面屏适配怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
本篇内容介绍了“Android怎么开发Input系统触摸事件分发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何...
今天小编给大家分享一下AndroidRoom怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
本文小编为大家详细介绍“AndroidRoom使用方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“AndroidRoom使用方法有哪些”文章能帮助大家...
这篇文章主要介绍“Android中的OpenGL怎么配置使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android中的Open...
这篇文章主要介绍了Android如何自定义自动识别涂鸦工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何自定义自动...
今天小编给大家分享一下Android如何自定义有限制区域的图例角度自识别涂鸦工具类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以...
今天小编给大家分享一下ReactNative错误采集原理在Android中如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章...
这篇文章主要讲解了“Android崩溃日志收集和保存代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“A...
这篇“Android面向单Activity开发实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大...
本篇内容介绍了“Android应用启动白屏处理的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何...