第三天:手机归属地

安卓DEMO里面的示例,我应该把安卓DEMO里面的示例看过一遍

1. 通过网络获取归属地 缺陷: 网络

2. 本地的数据库  (有一个电话号码的归属地)
sqlite的数据库 


android下的数据库 .db 
一定要有一张 android_metadata 




程序 开发中有一些大的素材 和资源文件 
1. res目录建立一个文件夹 raw  在R文件中生成一个id的引用 
最好推荐存放一些小的资源 几十k 几百K 



2. assets 资产目录
不会把里面的内容在R 文件中生成一个引用
assets 不推荐我们存在1M 文件
appt 打包工具可能出现问题.


3. javame 
把大的资源文件放置在src目录下 通过类加载器的方式 获取这个资源文件
导致我们应用程序的体积非常大.


4. 程序的主apk很小 素材文件 资源文件从服务器上下载 
sdcard rom 
一般游戏软件  大的oa软件 
地图软件 离线地体20~100M~ 1G 

菜谱程序: 


我们知道在子线程不能对UI进行更改,为什么Progress可以不断的更新进度呢?
因为底层它已经实现是通过Handler更新的,你可以看源码,而且可以在子线程里面
写dismiss,其实底层就是显示:
   public void dismiss() {
        if (Thread.currentThread() != mUiThread) {
            mHandler.post(mDismissAction);
        } else {
            mDismissAction.run();
        }
    }
如果不是主线和就告诉Handler去结束它,如果是主线程直接结束。

Message中what和obj区别?

学会从API demo里面找资源,先从上面的一些字符也就是资源文件找--》布局文件--》JAVA文件。
非常好的思路方法,要多学习方法。

有一个非常好的晃动动画,要学习。





没有使用类的成员变量直接做成静态方法。

发个东西:
File-based resource names must contain only lowercase a-z, 0-9, or _.
安卓中的XML文件只能是小写字母数字和下划线。

又是一个教训。子线程中不能改动主界面。
例如子线程里面不能调用一个Toast,因为它改变了主界面。操 ,太坑爹了。
记住了,所有在子线程里操作界面发生错误都是这句话:
Can't create handler inside thread that has not called Looper.prepare()
pd.setTitle("提示");
pd.setIcon(R.drawable.icon5);
pd.setCancelable(false);
pd.setMessage("正在下载数据库");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.show();//pd的这些操作放在子线程里面就是Can't create handler inside thread that has not called Looper.prepare()
new Thread(){
	public void run() {
		//提示用户下载数据库
		String dbUrl = getResources().getString(R.string.addressdburl);
		try {
			DownloadApkTask.download(dbUrl, Environment.getExternalStorageDirectory()+"/address.db", pd);
			//下载结束 关闭pd,但是它可以放这,虽然操作了界面显示 ,不过底层已经处理过了,它是先交给主线程处理的。
			pd.dismiss();
//						Toast.makeText(AtoolsActivity.this, "下载成功", 0).show();
//			
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 你可以使用第三方的API来查询手机号码的归属地,比如聚合数据、阿里云等。这里以聚合数据为例: 首先,你需要到聚合数据官网注册账号,并创建一个手机归属地查询的API,获取API key。 然后,你可以使用Python中的requests模块向聚合数据API发送请求,获取手机号码归属地信息。代码示例如下: ```python import requests url = 'http://apis.juhe.cn/mobile/get' params = { 'phone': '手机号码', 'key': '你的API key' } response = requests.get(url, params=params) result = response.json() if result['error_code'] == 0: print(result['result']['province'], result['result']['city']) else: print(result['reason']) ``` 其中,将手机号码替换为你要查询的手机号码,将API key替换为你在聚合数据官网获取的API key。 运行上述代码,即可获取手机号码对应的省份和城市信息。 ### 回答2: 可以使用Python的requests和re来读取手机号码的归属地信息。 首先,需要引入requests和re: ```python import requests import re ``` 然后,利用requests发送GET请求到归属地查询的API接口,传入手机号码作为参数,获取返回的结果: ```python def get_location(phone_number): url = "https://api.xxxxxx.com/phone/location?phone=" + phone_number response = requests.get(url) result = response.text return result ``` 接下来,利用re对返回结果进行提取,获取归属地信息: ```python def parse_result(result): pattern = re.compile(r'"location":"(.*?)"') match = pattern.search(result) location = match.group(1) return location ``` 最后,调用上述函数即可获取手机号码的归属地信息: ```python phone_number = "138*********" result = get_location(phone_number) location = parse_result(result) print("手机号码%s的归属地是:%s" % (phone_number, location)) ``` 以上即为使用Python读取手机归属地的简单实现。请注意,这只是一个示例,需要根据具体的归属地查询接口和正则表达式来获取结果。 ### 回答3: 在Python中,我们可以利用第三方来读取手机归属地信息。一个常用的是"phonenumbers"。 首先,我们需要安装"phonenumbers",在命令行中运行以下命令: ``` pip install phonenumbers ``` 接下来,我们可以使用以下代码来读取手机归属地: ```python import phonenumbers from phonenumbers import geocoder # 输入手机号码 phone_number = input("请输入手机号码:") # 格式化输入的手机号码 formatted_phone_number = phonenumbers.parse(phone_number, "ZZ") # 获取归属地信息 location = geocoder.description_for_number(formatted_phone_number, "zh") # 输出归属地信息 print("该手机号码归属地为:", location) ``` 在上述代码中,我们首先导入了"phonenumbers"和"geocoder"模块。然后,通过调用`phonenumbers.parse()`方法对输入的手机号进行格式化,将其转换为适合使用的格式。接着,我们调用`geocoder.description_for_number()`方法并传入格式化后的手机号码和语言参数(在这里我们选择使用中文)来获取归属地信息。最后,我们将得到的归属地信息输出到控制台。 需要注意的是,该代码需要联网才能正确获取手机号码归属地信息。同时,由于不同国家/地区的手机号码格式不同,可能需要对手机号码进行一些预处理,以便能正确解析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值