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用这两个就可以了.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itheima.baidumap74"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" > <!-- .就代表你前面这个基础的一个包 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="QaDs6ScFuwxGh75ku6gijqNnBhnXmNqZ=1231312" />
<!--
下面这个activity也是一样,简单一点,以.打头就行了.这样看起来会比较简短一点,看起来会比较舒服.
android:name="com.itheima.baidumap74.MainActivity"
-->
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
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();
} }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <!-- MapView是带包名的,说明这个View不是系统自带的View,是第三方的View.明显就是用于显示地图的叫MapView --> <com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" /> </RelativeLayout>

02、监听key是否正确的更多相关文章

  1. 在线配置热加载配置 go-kratos.dev 监听key

    paladin https://v1.go-kratos.dev/#/config-paladin example Service(在线配置热加载配置) # service.go type Servi ...

  2. Oracel数据库连接时出现:ORA-12518:监听程序无法分发客户机连

    在连接Oracel数据库时,每隔一段时间就会出现:ORA-12518:监听程序无法分发客户机连接,如图 上网查了资料原因和解决方案如下: 一.[问题描述] 最近,在系统高峰期的时候,会提示如上的错误, ...

  3. oracle:TNS:监听程序无法分发客户机连接

    挂上vpn的时候,PL/SQL连接到oracle的时候,显示ORA-12518:监听程序无法分发客户机连接.如下图: 一.[问题描述] 最近,在系统高峰期的时候,会提示如上的错误,致使无法连接到服务器 ...

  4. Java实现系统目录实时监听更新。

    SDK1.7新增的nio WatchService能完美解决这个问题.美中不足是如果部署在window系统下会出现莫名其妙的文件夹占用异常导致子目录监听失效,linux下则完美运行.这个问题着实让人头 ...

  5. Windows平台下Oracle 11g R2监听文件日志过大,造成客户端无法连接的问题处理

    近期部署在生产环境的应用突然无法访问,查看应用日志发现无法获取数据库连接. SystemErr R Caused by: oracle.net.ns.NetException: The Network ...

  6. 记录一份Oracle 正确的监听配置文件listener.ora与tnsnames.ora

    一.前言 昨天中午接到领导指示,有其他组的负责人B在厄瓜多尔演示他们组的产品,然后我们组的负责人就想说也在那边搭一套环境,(北美那边的亚马逊云环境),让B帮忙演示下我们的系统. 于是,开始了一个比较曲 ...

  7. ios监听ScrollView/TableView滚动的正确姿势

    主要介绍 监测tableView垂直滚动的舒畅姿势 监测scrollView/collectionView横向滚动的正确姿势 1.监测tableView垂直滚动的舒畅姿势 通常我们用KVO或者在scr ...

  8. SearchView监听关闭正确方案

    SearchView往往需要在关闭的时候清除筛选的数据后加载全部数据,但是oncloseListener在高版本的andorid是不起作用的 ,正确的做法应该是取得searchview中那个close ...

  9. springboot redis 监听过期key值事件

    redis 中的key值过期后,触发通知事件 1.创建springboot工程,创建监听类 maven配置 <dependencies> <dependency> <gr ...

随机推荐

  1. Linux 查看发行版版本信息和内核版本

    版本信息: cat  /etc/centos-release  或 redhat-release cat  /etc/issiue 内核信息:uname -r   或   uname  -a

  2. 一:安装centos 7最小编程环境 xfce桌面

    1, u盘制作安装盘------------------------------------------------------安装时, table或者e进入编辑选项    如果不知道你的u盘的盘符 ...

  3. 根据屏幕的大小改变rem的参考值

    移动端一半会选用rem+flex布局的方式,下面是根据屏幕的宽度,动态的改变rem的参考值 var screenWidth;             var html = document.getEl ...

  4. PAT 1131 Subway Map

    In the big cities, the subway systems always look so complex to the visitors. To give you some sense ...

  5. 3.6.5 空串与Null串

        空串""是长度为0的字符串.可以调用以下代码检查一个字符串是否为空:                 String s = "greeting";    ...

  6. 【Codeforces 1019A】Elections

    [链接] 我是链接,点我呀:) [题意] 每个人都有自己喜欢的队员 但是如果贿赂他们可以让他们更改自己喜欢的队员 问你最少要花多少钱贿赂队员才能让1号队员严格有最多的人喜欢? [题解] 除了1号之外, ...

  7. Codeforces 263A. Appleman and Easy Task

    A. Appleman and Easy Task time limit per test  1 second memory limit per test  256 megabytes input  ...

  8. Java Syntax Specification

    Java Syntax Specification Programs <compilation unit> ::= <package declaration>? <imp ...

  9. [luoguP1854] 花店橱窗布置(DP)

    传送门 f[i][j] 表示前 i 盆花,放到前 j 个花盆中的最优解 pre[i][j] 记录前驱 代码 #include <cstdio> #include <cstring&g ...

  10. [BZOJ2120] 数颜色 && [bzoj2453] 维护队列(莫队 || 分块)

    传送门 只有第一个,第二个权限题. 分块,然而wa,没看出来错在哪里,有时间再看. #include <cmath> #include <cstdio> #include &l ...