一个简单的Demo,从聚合数据申请手机号码归属地数据接口;

在EditText中输入待查询号码,获取号码后在子线程中使用HttpUrlconnection获取JSON数据,之后进行解析;

数据获取完成后,在主线程中更新UI,显示获取的号码归属地信息。

布局文件

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/et_querylocation"

android:layout_height="wrap_content"

android:layout_width="match_parent"

android:textColor="#000000"

android:hint="输入号码"/>

android:onClick="query"

android:textSize="24sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="查询"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/tv_phonelocation"

android:textSize="20sp"

android:textColor="#000000"/>

java代码

package com.example.phonehome;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;

import org.json.JSONObject;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.text.TextUtils;

import android.view.View;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_phone;

private TextView tv_phone;

private final static int START = 0;

private final static int FINISH = 1;

private String phone;//待查询号码

//号码信息

private static String province;

private static String city;

private static String company;

private static String card;

public static final String DEF_CHATSET = "UTF-8";

public static final int DEF_CONN_TIMEOUT = 30000;

public static final int DEF_READ_TIMEOUT = 30000;

public static final String APPKEY ="申请的APP KEY";

//子线程中查询数据开始、完成时发送消息,完成相应操作

Handler handler = new Handler(){

public void handleMessage(android.os.Message msg) {

switch (msg.what) {

case START:

Toast.makeText(MainActivity.this,"正在查询,请稍候",Toast.LENGTH_SHORT).show();

break;

case FINISH:

//在Textview中显示查得的号码信息(子线程中不能更新UI)

tv_phone.setText(province +" "+ city + " " + company + " " + card);

break;

default:

break;

}

};

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

initView();

}

//Button的店家事件,获取待查询号码后在子线程中进行查询

public void query(View v){

phone = et_phone.getText().toString().trim();

if (!TextUtils.isEmpty(phone)) {

new Thread(){

public void run() {

//开始查询

handler.obtainMessage(START).sendToTarget();

getRequest(phone);

//查得结果

handler.obtainMessage(FINISH).sendToTarget();

};

}.start();

}else {

Toast.makeText(MainActivity.this,"输入号码不能为空",Toast.LENGTH_SHORT).show();

}

}

//手机归属地查询

public static void getRequest(String phone){

String result =null;

String url ="http://apis.juhe.cn/mobile/get";//请求接口地址

Map params = new HashMap();//请求参数

params.put("phone",phone);//需要查询的手机号码或手机号码前7位

params.put("key",APPKEY);//应用APPKEY(应用详细页查询)

params.put("dtype","");//返回数据的格式,xml或json,默认json

try {

//得到JSON数据,并进行解析

result =net(url,params,"GET");

JSONObject object = new JSONObject(result);

JSONObject ob = new JSONObject(object.get("result").toString()+"");

province = ob.getString("province");

city = ob.getString("city");

company = ob.getString("company");

card = ob.getString("card");

} catch (Exception e) {

e.printStackTrace();

}

}

/**

*

* @param strUrl 请求地址

* @param params 请求参数

* @param method 请求方法

* @return 网络请求字符串

* @throws Exception

*/

public static String net(String strUrl,Map params,String method) throws Exception {

HttpURLConnection conn = null;

BufferedReader reader = null;

String rs = null;

try {

StringBuffer sb = new StringBuffer();

if(method==null || method.equals("GET")){

strUrl = strUrl+"?"+urlencode(params);

}

URL url = new URL(strUrl);

conn = (HttpURLConnection) url.openConnection();

if(method==null || method.equals("GET")){

conn.setRequestMethod("GET");

}else{

conn.setRequestMethod("POST");

conn.setDoOutput(true);

}

//conn.setRequestProperty("User-agent",userAgent);

conn.setUseCaches(false);

conn.setConnectTimeout(DEF_CONN_TIMEOUT);

conn.setReadTimeout(DEF_READ_TIMEOUT);

conn.setInstanceFollowRedirects(false);

conn.connect();

if (params!= null && method.equals("POST")) {

try {

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

out.writeBytes(urlencode(params));

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

InputStream is = conn.getInputStream();

reader = new BufferedReader(new InputStreamReader(is,DEF_CHATSET));

String strRead = null;

while ((strRead = reader.readLine()) != null) {

sb.append(strRead);

}

rs = sb.toString();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

reader.close();

}

if (conn != null) {

conn.disconnect();

}

}

return rs;

}

//将map型转为请求参数型

public static String urlencode(Map data) {

StringBuilder sb = new StringBuilder();

for (Map.Entry i : data.entrySet()) {

try {

sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

return sb.toString();

}

private void initView() {

setContentView(R.layout.activity_main);

et_phone = (EditText) findViewById(R.id.et_querylocation);

tv_phone = (TextView) findViewById(R.id.tv_phonelocation);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助。

vba手机号码归属_Android手机号码归属地的查询相关推荐

  1. vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...

    原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...

  2. php判断号码归属,PHP手机号码归属地查询代码(API接口/mysql)

    首先我们介绍使用自己的数据库查询多个手机号码,那还是建议你拥有一个自己的的手机号码数据库.正常情况下,只是满足一般查询的话,你不需要去购买专业版的手机号码数据库,增加无谓成本.我免费为你提供一个ACC ...

  3. 判断手机号码运营商,归属地等信息

    CREATE TABLE db_lsxy_ussd.tb_telnum_info (`id` varchar(32) NOT NULL,`mobile` varchar(10) DEFAULT NUL ...

  4. oracle判断是否是手机号码,oracle判断手机号码是否合法

    合法手机号码:都是11位数,并且以13.15.18开头的. create or replace function isLegal(phoneNumber  in  varchar2) return n ...

  5. 什么是手机号码姓名实名认证 手机号码查姓名 手机号实名认证API

    手机号实名制指用户办理固定电话.移动电话.宽带业务.无线上网卡的入网.过户等业务时,应提供真实身份信息,以自己的名称.产品.品牌等文字标识为手机号码进行注册. 修改手机号身份证的方式为用户可携带本人身 ...

  6. android edittext 手机号码,Android Edittext 手机号码格式输入设置

    一. 效果图 根据需求要实现的是输入手机号码格式的数字文本,并且输入时能根据手机号码自动分隔成美观的带空格的格式,点击完成后能对手机号码验证是否是手机号码. 二. 代码实现 我使用的是动态添加代码的方 ...

  7. 手机号批量查询归属地方法及其简介批量查询号码归属地方法

    在某些情况下需要将手机号归属地进行批量查询,一个一个查询太麻烦了,有没有批量查询的办法呢?当然是有的,我介绍一个很好的工具可以完全完成这个任务 这个工具还是蛮有用的,不过得收费,毕竟别人花了时间写的, ...

  8. java代码校验手机号码_校验手机号码的正则表达式写法 (java实现)

    本文转载自:http://my.oschina.net/william1/blog/4752 要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经 ...

  9. html5手机号码数据类型,报手机号码的四种格式,你是哪种性格?

    国内手机号码通常都是11位数字组成,而对于这11个数字组成的号码,每个人都有不同的播报习惯.每当有人问你要手机号码时,你通常都是怎么报给对方的呢? 比如:137 1234 5678,还是137 123 ...

最新文章

  1. 偶然发现的QQ的一个挺讨厌的BUG
  2. 从1到10排序的C语言程序,C语言:用冒泡法从高到低排序10 个数,然后进行反排序...
  3. 刷算法的时候有没有必要自写测试用例?
  4. python multiprocessing模块
  5. 企业应用开发平台-GAP平台
  6. createrepo命令安装_安装CDH6.3
  7. 典型案例 3:十分钟搭建弹性可扩展的 Web API
  8. Python Django jsonpickle序列化隐藏部分字段代码示例
  9. SpringBoot_入门-Spring Boot简介
  10. ora-03113 访问某条记录_用了Excel十几年,你居然不知道“记录单”?!可能错过一个亿……...
  11. 用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理
  12. 封条格式用word怎么打_汽车密封条保养膏怎么用?大师来教你正确方法
  13. Docker安装tomcat出现404问题
  14. ubuntu16 install sogou input
  15. 华为手机上的网上邻居怎么用_华为手机如何无线连接电脑
  16. 使用J-Link打印日志——SEGGER Real-Time Transfer(RTT)工具的移植使用
  17. 我的世界服务器如何修改头像,我的世界单机模式怎么换头像
  18. java作为微信小程序的后端_微信小程序连接java后端
  19. linux相关-ubuntu使用ssh public key登陆
  20. 小米6 android p是什么,小米6什么配置参数?小米6标配有什么?

热门文章

  1. 为什么前后端分离了,你比从前更痛苦?
  2. 基于织梦Cms5.7 utf-8版本的仿今日头条微信小程序模块插件的使用和安装
  3. Window编译Opencv CUDA
  4. 海康sdk返回yv12
  5. efficientdet
  6. mxnet cannot import name 'nd'
  7. [WinError 17] 系统无法将文件移到不同的磁盘驱动器
  8. google手势检测
  9. “CV_GRAY2BGR”: 未声明的标识符
  10. ffmpeg4编解码例子