博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
02、监听key是否正确
阅读量:5018 次
发布时间:2019-06-12

本文共 5095 字,大约阅读时间需要 16 分钟。

SDKInitializer其实是有两个action,第三个SDK_BROADTCAST_INTENT_EXTRA_INFO_KEY_ERROR_CODE虽然是一个常量但是它不是action.第二个action是SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR,SDK广播的一个action,SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR和SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR用这两个就可以了.


package com.itheima.baidumap74;import android.app.Activity;import android.view.Gravity;import android.widget.Toast;public class BaseActivity extends Activity{    /**     * 在屏幕中央显示一个Toast     * @param text     */    public void showToast(CharSequence text){
//字符序列.字符序列这个接口 //CharSequence其实是我们String的父类.String是实现了这个接口的. //所以说我们最好面向接口来编程.这样子这个方法更加通用. Toast toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);//局部变量toast toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); }}
package com.itheima.baidumap74;import com.baidu.mapapi.SDKInitializer;import android.app.Application;//MyApplication也可以说是一个组件,既然是组件的话呢跟你那个四大组件一样是也需要配置的.public class MyApplication extends Application {    @Override    public void onCreate() {
// 覆盖一个onCreate()方法,当这个组件MyApplication被运行的时候呢它首先会走这个onCreate // 进行一个创建. // TODO Auto-generated method stub // super.onCreate();//空实现,可以删除掉. // 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 注意该方法要再setContentView方法之前实现 //初始化一下SDK.初始化的时候它就会去验证我们这个Key是否正确或者说判断一下是否有网络.所以说那个action应该定义到这个初始化类里面来了. SDKInitializer.initialize(getApplicationContext());//把初始化SDK这个代码在MainActivity里面剪切掉,放到 //Application里面去完成 }}
package com.itheima.baidumap74;//import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.MapView;import android.os.Bundle;//import android.app.Activity;//import android.view.Menu;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;public class MainActivity extends BaseActivity {    private MapView mMapView;    private BroadcastReceiver receiver;//把receiver由局部/本地变量变成成员变量    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 在使用SDK各组件之前初始化context信息,传入ApplicationContext        // 注意该方法要再setContentView方法之前实现        // SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);         //获取地图控件引用          mMapView = (MapView) findViewById(R.id.bmapView);      }    @SuppressWarnings("unused")    private void registerSDKCheckReceiver(){        //如果你不注册这个广播假设你这个key错了你也不知道.你可能会认为哪一步错了然后找很久找不到原因.所以我们最好去注册一下这样的一个广播.        receiver = new BroadcastReceiver(){            @Override            public void onReceive(Context context, Intent intent) {                // TODO Auto-generated method stub                //如果说接收到广播就会跑到这里面来.                //这里面由于我们是有两个action,我们要进行一个判断,先把它们取出来.                String action = intent.getAction();                if(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR.equals(action)){
//首先是这个网络错误,. //显示吐司这种代码很常用,如果说我们有一个base的话呢以后我们显示吐司会非常方便. //这个base类大家应该不陌生. //当我们接收到这一个网络处理故障的广播的时候呢, showToast("网络错误"); }else if(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR.equals(action)){ showToast("key验证失败"); } } //因为代码不会很多我就直接new它的内部类了. }; IntentFilter filter = new IntentFilter();//本地变量,局部变量.IntentFilter是比较关键,也就是说你要拦截哪些广播就通过它来指定. //监听网络错误 filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);//广播会以action的方式发出来.这个action从哪里来呢? //我们最主要的还不是监听网络错误,我们需要的是权限检查的错误 //监听百度地图sdk 的key是否正确. filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR); //只要这两个广播一发出来,那你这个接收者呢就能接收到 //注册接收者 registerReceiver(receiver, filter);//接收一个广播接收者BroadcastReceiver,IntentFilter. } //Ctrl+I格式化 //这是百度地图规定的,它mMapView也有生命周期方法,你必须在Activity相应的生命周期方法里面呢去调mMapView对应的生命周期方法. //这个就没什么好记的了,死记硬背就行了.照着调用. @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); //解除注册接收者 unregisterReceiver(receiver); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } }

 

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7264480.html

你可能感兴趣的文章
#pragma arm section说明
查看>>
Jzoj3906 魏传之长坂逆袭(梦回三国系列)
查看>>
【面向对象设计与构造】第一次博客作业
查看>>
Unity3D_(数据)JsonUtility创建和解析Json
查看>>
识别人脸伪装 仅看眼睛和嘴巴就能识别一半
查看>>
HTML文件的结构
查看>>
数字PID控制算法
查看>>
.net dll破解实战
查看>>
jquery新添加元素无法删除
查看>>
标准库 os、sys、logging、configparser、time、requests
查看>>
C#中搜索关键词高亮显示
查看>>
shell 两类执行方法
查看>>
二叉查找树的基类实现(终)
查看>>
洛谷 P3376 【【模板】网络最大流】
查看>>
log4j 日志信息的引入(通用版)——解决项目运行过程中的日志信息
查看>>
http://blog.csdn.net/howellzhu/article/details/42841191
查看>>
MyBatis自学(2):MyBatis初识
查看>>
Android中Message机制的灵活应用
查看>>
SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)...
查看>>
一个远程访问MySQL的错误(2003, 10061)的解决
查看>>