3.10 号码归属地显示风格 :自定义Toast
来源:互联网 发布:oracle 数据挖掘 编辑:程序博客网 时间:2024/05/22 06:56
1.创建WindowManager
2.创建一个方法,在方法中调用 wm.addView( view, params);的方法
view:只自定义Toast布局 params:系统Toast布局源码对象
----------------------------------------------------------------------------------------
/**
* 来电时显示来电号码归属地的服务
* @author Administrator
*
*/
public class ShowAddressService extends Service {
private TelephonyManager tm;
private MyListener listener;
private BroadcastReceiver receiver;
private SharedPreferences sp;
//自定义Toast
private View view;
private WindowManager wm;
// "半透明","活力橙","卫士蓝","苹果绿","金属灰"
private static final int[] bgs = {R.drawable. call_locate_white,
R.drawable. call_locate_orange, R.drawable. call_locate_blue,
R.drawable.call_locate_green, R.drawable. call_locate_gray };
@Override
public IBinder onBind(Intent intent) {
return null;
}
/**
* 代码的方式创建广播接收者
*/
private class OutCallReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String address = AddressDao.getAddress(getResultData(), context);
System. out.println(address+ ".....................");
// Toast.makeText(context, address, 1).show();
showAddress(address);
}
}
/**
* 服务创建的时候
*/
@Override
public void onCreate() {
super.onCreate();
sp=getSharedPreferences( "config", MODE_PRIVATE);
//创建WindowManager
wm = (WindowManager) getSystemService( WINDOW_SERVICE);
//在服务创建时注册并开启广播
receiver=new OutCallReceiver();
IntentFilter filter= new IntentFilter();
filter.addAction( "android.intent.action.NEW_OUTGOING_CALL" );
this.registerReceiver( receiver, filter);
//创建电话管理者
tm=(TelephonyManager) getSystemService( TELEPHONY_SERVICE);
listener= new MyListener(); //初始化MyListener()
//注册一个监听器,监听电话状态的改变
tm.listen(listener, PhoneStateListener. LISTEN_CALL_STATE);
}
/**
* 服务销毁的时候
*/
@Override
public void onDestroy() {
super.onDestroy();
//在服务销毁时结束广播
unregisterReceiver( receiver);
receiver = null;
// 当服务停止的时候 取消电话监听
tm.listen( listener, PhoneStateListener. LISTEN_NONE);
listener = null;
}
/**
* 电话状态的监听器
*
*/
public class MyListener extends PhoneStateListener{
@Override
public void onCallStateChanged( int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager. CALL_STATE_IDLE: //空闲状态
if ( view != null) {
wm.removeView( view); //电话挂断时,移除土司
view = null;
}
break;
case TelephonyManager. CALL_STATE_RINGING: //响铃状态
String address = AddressDao.getAddress(incomingNumber,getApplicationContext());
// Toast.makeText(getApplicationContext(), address, 1).show();
showAddress(address);
break;
case TelephonyManager. CALL_STATE_OFFHOOK: //接听状态
break;
}
}
}
/**
* 显示一个自定义的土司
*
* @param address
*/
public void showAddress(String address) {
//得到自定义土司的布局
view = View. inflate(getApplicationContext(), R.layout.toast_address,null );
TextView tv = (TextView) view.findViewById(R.id. tv_info);
tv.setText(address);
view.setBackgroundResource( bgs[ sp.getInt( "which", 0)]);
//系统源码Toast设置修改
WindowManager.LayoutParams params = new LayoutParams();
params. height = WindowManager.LayoutParams. WRAP_CONTENT;
params. width = WindowManager.LayoutParams. WRAP_CONTENT;
params. flags = WindowManager.LayoutParams. FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams. FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ;
params. format = PixelFormat. TRANSLUCENT;
params. type = WindowManager.LayoutParams. TYPE_TOAST;
//show出自定义土司
wm.addView( view, params);
}
}
- 3.10 号码归属地显示风格 :自定义Toast
- 自定义Toast显示归属地查询结果
- 号码归属地显示应用
- 37来电号码归属地的显示
- 9.来电显示归属地--自定义Toast
- 104.归属地风格的自定义选择
- 号码归属地查询---------------
- 号码归属地查询
- 号码归属地查询
- 号码归属地
- 号码归属地查询
- Android中来电号码归属地的显示
- android 自定义Toast显示风格
- android 自定义Toast显示风格
- android 自定义Toast显示风格
- 如何自定义toast实现来电归属地查询
- 号码归属地查询软件
- 3.7 来电显示号码归属地
- 3.8 获取系统正在运行的服务
- 3.9 采用代码的方式动态注册广播接收者
- 备忘 linux 64(fedora19) firefox21 安装flash palyer
- java策略模式简单用例
- 彩虹表破解开机密码、MD5算法等的原理
- 3.10 号码归属地显示风格 :自定义Toast
- Android SDK和ADT总是下载或更新不了的问题
- ZOJ 1049 I Think I Need a Houseboat
- 3.11 选择归属地显示风格:单选对话框
- php
- 猫
- 【Python】wxPython带颜色的进度条创建
- 深入理解HTTP协议(转)
- 3.12 view可拖动效果