Android从无知到有知——NO.5
今天整一下利用广播实现ip拨号。
这一块主要用到的知识是android四大组件之中的一个的broadcast receiver(广播接收者)。那么它接收什么东东呢,就是我们所无谓的一个个的事件,比方有外拨电话,低电量提示。来短信等等。
那什么又是ip拨号呢,大家可能有这种印象,在拨打长途电话的时候号码前边会加上几位数字,这就是所谓的ip号,这样打电话比直接拨打会廉价一些。事实上ip拨号的原理非常easy,它就是利用前边说的broadcast receiver监听到我们所拨打的号码,然后把它提取出来。在其前边加上ip号,最后改动成所谓的ip电话号码,ok,直接上代码啦......
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/input" />
<EditText
android:inputType="phone"
android:id="@+id/et_ipnumber"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:onClick="click"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sure" />
这个想必大家都非常熟悉了,先建一个设置ip号的小界面。规定其仅仅能输入电话类型的号码。没啥难度。直接上效果图:
接下里就到了比較关键的步骤了。再来一块:
public class MainActivity extends Activity {
private EditText et_ipnumber;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_ipnumber=(EditText)findViewById(R.id.et_ipnumber);
sp=getSharedPreferences("config", MODE_PRIVATE);
et_ipnumber.setText(sp.getString("ipnumber", ""));
}
@SuppressLint("ShowToast")
public void click(View view){
String ipnumber=et_ipnumber.getText().toString().trim();
Editor editor=sp.edit();
editor.putString("ipnumber", ipnumber);
editor.commit();
Toast.makeText(this,"设置完成", 0).show();
}
}
首先我们通过id找到设置好的ip号,把它赋给ipnumber,得到号码以后我们须要把它存起来。这样下次再进去的时候这个号码还会显示,用到的是SharedPreferences。它是一个轻量级应用程序内部轻量级的存储方案,特别适合用于保存软件配置參数。getSharedPreferences有两个參数,第一个參数是存储时的名称。第二个參数则是文件的打开方式;然后sp调用它的方法的得到一个编辑器editor,将数据保存至SharedPreferences,别忘了用commit()方法提交,拿到这个数据之后就把它返给et_ipnumber的文本中,这样一个基础的ip拨号设置器就完毕了。
布局完毕了。接下来就要干活了,去监听外拨电话然后将其改动成ip号码的形式。
我们须要建一个java类,继承Broadcast receiver,上代码:
public class OutCall extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("发现一个外拨电话");
String number=getResultData();
System.out.println("这是外拨电话的号码");//得到外拨电话号码
//替换号码
SharedPreferences sp =context.getSharedPreferences("config", context.MODE_PRIVATE);
String ipnumber=sp.getString("ipnumber", "");
String newnumber=ipnumber+number;
//得到新的外拨号码
setResultData(newnumber);
}
}
当有一个外拨电话时它便会调用onReceive方法(关于这种方法和相关知识的补充放到下一篇),我们还能够把监听到的电话号码显示出来,然后将其和设置好的ip号相加得到终于的ip电话号码。
上机上效果图吧:
我给自己打的电话,前边加上了设置好的ip号1234。ok,大体就是这样,下一篇说说这个小样例里边出现的一些问题另一些必要的附带知识,先这样。
Android从无知到有知——NO.5的更多相关文章
- Android从无知到有知——NO.7
的ip拨号器在监听外拨电话时用的是系统提供的广播事件.而有些时候我们须要自己设定广播事件来满足特定的须要. Ok,今天整一下自己定义广播事件,我们用一个状态监測模块向一个3G模块发送报警信息来实现这一 ...
- Android从无知到有知——NO.1
如期而至的软件设计大赛吹响了重生的号角.正如同我们的指导老师所说,这个暑假会影响你近几年的发展,也可能会决定你以后所走的道路. 是的.我身边就有非常好的样例,有些师哥师姐们常常跟我们说.软件大赛不仅使 ...
- Android从无知到有知——NO.3
昨天看了下几种常见的布局,类似于曾经学的html.关于css+div没有接触太多,但这几种布局都比較简单.仅仅要逻辑没有太大问题就能整出来. 相对布局是我们平时默认的布局,也是最经常使用的.前边做的& ...
- Android从无知到有知——NO.2
这几天虽说偶遇瓶颈.但也渐入佳境.因为之前没有接触过android,所以作为一个新手不会给自己过高的要求.相比于去年做的分布式资源检索,今年的移动开发着实要简单一些.尽管其本质没有太大的差别,但从用户 ...
- Android从无知到有知——NO.6
紧随上一篇,说一下创建ip拨号器过程中出现的一些问题. 1)在一開始监听外拨电话的时候会报这样一个警告: Permission Denial: receiving Intent { act=andro ...
- Android从无知到有知——NO.4
因为我们做的是手机安全卫士,因此,我们需要一个地图定位功能,些相关的项目,也有一些教程.到百度官方下载了相关的jar包和API,但自己建项目的时候却不是那么顺利,bug不断,弄得心烦意乱,最后最终臣服 ...
- Android仿今日头条和知乎等App顶部滑动导航实现代码分析及源码下载
一.本文所涉及到的知识点 源码下载 二.目标 通过利用ViewPager+FragmentStatePagerAdapter+TabLayout 实现顶部滑动效果,如图: 三.知识点讲解 1.View ...
- Docker学习-从无知到有知的学习过程
Docker学习 最近被别人提到的docker吸引到了注意力,所以打算先快速的了解一下docker到底是个上面东西. 之所以我写下这个文档呢,是为了记录对docker一无所知我是如何进行学习一门新技术 ...
- Android 程序员必须知道的 53 个知识点
1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...
随机推荐
- [Android Memory] 使用 Eclipse Memory Analyzer 进行堆转储文件分析
转载地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html Eclipse Memory Analyzer ...
- 在Spark中自定义Kryo序列化输入输出API(转)
原文链接:在Spark中自定义Kryo序列化输入输出API 在Spark中内置支持两种系列化格式:(1).Java serialization:(2).Kryo serialization.在默认情况 ...
- json-lib 的maven dependency
项目中要用到json-lib,mvnrepository.com查找它的dependency时结果如下: <dependency> <groupId>net.sf.json-l ...
- Oracle sql loader 使用案例
Listing 1: ---------------------- dir *.csv type abc.csv sqlplus scott/tiger@orcl create table emp1 ...
- MFC【5】MFC集合类
MFC集合类现在来看已经很落后了. 5.1数组 5.1.1MFC数组类 CArray类,它实际是一个模板类,利用它可以创建人和数据类型的类型安全数组.在头文件Afxtempl.h中定义了CArray. ...
- C# 窗体WinForm中动态显示radioButton实例
一个项目中用到的实例,根据数据库查询出待显示的radioButton的个数,显示在一个新的窗口中. //动态显示radioButton public void showRadioButton(int ...
- 【SSH三大框架】Hibernate基础第十一篇:对继承映射的操作
在java中.类之间能够有继承关系.可是在数据库中是没有继承关系的.只是Hibernate是为了把面向对象的关系反映到数据库中.Hibernate为我们提供了3种方案: 第一.一个继承体系放在一张表中 ...
- [转] windows下sublime2 安装破解(key可用)
转: http://jingyan.baidu.com/article/ff4116259b057c12e48237b8.html Sublime Text 2安装汉化破解.插件包安装教程 | 浏览: ...
- 分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable
分布式系统学习必读文章!!!! 原文:http://blog.sina.com.cn/s/blog_4ed630e801000bi3.html 分布式系统漫谈一 —— Google三驾马车: GFS, ...
- [Compose] 19. Leapfrogging types with Traversable
We use the traversable instance on List to reimplement Promise.all() type functionality. For example ...