IP拨号器

二、布局
图1-2 所示的布局代码如下所示。
【文件1-1】activity_main.xml
1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2. xmlns:tools="http://schemas.android.com/tools"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent"
5. android:orientation="vertical">
6.
7. <EditText
8. android:id="@+id/et_ip"
9. android:hint="请输入IP 号码,默认17951"
10. android:layout_width="match_parent"
11. android:layout_height="wrap_content" />
12. <Button
13. android:onClick="saveIP"
14. android:layout_width="wrap_content"
15. android:layout_height="wrap_content"
16. android:text="保存"
17. />
18.
19. </LinearLayout>
20.
三、代码
在该案例中总共用到了两个类一个是MainActivity.java 负责让用户输入IP 号码,另外一个是自定义的
上海黑马程序员——只要学不死,就往死里学,冲击年薪20 万!
5
广播接收者IPCallerReceiver 负责监听用户的拨打电话事件。
【文件1-2】MainActivity.java
1. package com.itheima.android.ipcaller;
2.
3. import android.os.Bundle;
4. import android.app.Activity;
5. import android.content.SharedPreferences;
6. import android.text.TextUtils;
7. import android.view.View;
8. import android.widget.EditText;
9. import android.widget.Toast;
10. /**
11. * 保存用户的IP 号码
12. *
13. * @author wzy 2015-11-18
14. *
15. */
16. public class MainActivity extends Activity {
17.
18. private EditText et_ip;
19. private SharedPreferences sp;
20. @Override
21. protected void onCreate(Bundle savedInstanceState) {
22. super.onCreate(savedInstanceState);
23. setContentView(R.layout.activity_main);
24. //文本编辑控件
25. et_ip = (EditText) findViewById(R.id.et_ip);
26. //获取sp 对象
27. sp = getSharedPreferences("config", MODE_PRIVATE);
28. }
29. //保存IP 号码
30. public void saveIP(View view){
31. String ipNum = et_ip.getText().toString().trim();
32. //如果为空则保存默认值
33. if (TextUtils.isEmpty(ipNum)) {
34. sp.edit().putString("ip", "17951").commit();
35. }else {
36. sp.edit().putString("ip", ipNum).commit();
37. }
38. Toast.makeText(this, "IP 号码保存成功", Toast.LENGTH_SHORT).show();
39. }
40.
41. }
42.
编写自定义广播接收者需要自定义一个类然后继承系统提供的BroadCastReceiver 类,然后覆写抽象方
上海黑马程序员——只要学不死,就往死里学,冲击年薪20 万!
6
法onReceive。
【文件1-3】IPCallerReceiver.java
1. package com.itheima.android.ipcaller;
2.
3. import android.content.BroadcastReceiver;
4. import android.content.Context;
5. import android.content.Intent;
6. import android.content.SharedPreferences;
7. import android.text.TextUtils;
8. import android.util.Log;
9. /**
10. * 自定义广播接收者
11. *
12. * @author wzy 2015-11-18
13. *
14. */
15. public class IPCallerReceiver extends BroadcastReceiver {
16.
17. @Override
18. public void onReceive(Context context, Intent intent) {
19. //获取数据
20. String resultData = getResultData();
21. Log.d("tag", "接收到广播:"+resultData);
22. //从SharedPreferences 中获取用户保存的IP 号码
23. SharedPreferences sp =
24. context.getSharedPreferences("config", Context.MODE_PRIVATE);
25. String ipNum = sp.getString("ip", "17951");
26. if (!TextUtils.isEmpty(ipNum)) {
27. //修改数据
28. resultData = ipNum+resultData;
29. }
30. //将修改后的数据设置出去
31. setResultData(resultData);
32. }
33.
34. }
四、在清单文件中进行注册
广播是Android 四大组件之一,因此需要在AndroidManifest.xml 中进行注册。同时监听用户的拨打电
话行为也属于侵犯用户隐私的行为,因此需要添加权限。
1、注册广播
上海黑马程序员——只要学不死,就往死里学,冲击年薪20 万!
7
【文件1-4】注册广播
1. <receiver android:name="com.itheima.android.ipcaller.IPCallerReceiver">
2. <intent-filter >
3. <action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
4. </intent-filter>
5. </receiver>
大家可以发现广播接收者的注册也需要通过intent-filter 来监听特定的广播,如果是监听Android 系统
的,那么在action 中就需要配置系统提供的常量。如果监听自定义发送的广播,那么就需要配置自定义广
播设置的action。
2、声明权限
【文件1-5】添加权限
1. <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值