1、xxxManager的获取方法
a、拿到系统服务:xxxManager = context.getSystemService(name.service)
ActivityManager am = (ActivityManager) getSystemService(ACCESSIBILITY_SERVICE);
b、直接通过上下文.getXXX形式获得
PackageManager pm = context.getPackageManager();
c、通过实例获得
AppWidgetManager manager = AppWidgetManager.getInstance(this);
2、举例如下:
1、activityManager获取手机的内存信息(运行内存,总内存)
private void initRunningInfo() {
//ActivityManager 一般用来获取正在运行的一些信息,可以用来管理四大组件
//PackageManager 一般用来获取手机上安装的应用到信息
// 使用系统的API获取系统正在运行的进程的一些信息
List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
runningcount = runningAppProcesses.size();
// 给运行进程数赋值
tv_running_progress.append(runningAppProcesses.size() + "个");
// 方法以get开头,但是返回结果是void 那么就从那个参数对象中获取
// 这个对象相当于一个盒子
outInfo = new MemoryInfo();
am.getMemoryInfo(outInfo);
// 分别使用系统的API获取系统现在可用的内存以及总的内存信息
long availMem = outInfo.availMem;
// 这一句必须在4.1以上的手机才可以使用 16
// 低版本手机可以从 /proc/meminfo 文件 读取
long totalMem = outInfo.totalMem;
String availMemStr = Formatter.formatFileSize(this, availMem);
totalMemStrt = Formatter.formatFileSize(this, totalMem);
tv_memory_info.append(availMemStr + "/" + totalMemStrt);
}
2、windowManager进行自定义吐司
吐司的原理就是,通过使用WindowManager使用getsystem的服务,在窗体上面添加一个view(使用addView的方法)
//外拨电话,
MyOutGoingCallReceiver outGoingCallReceiver = new MyOutGoingCallReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.NEW_OUTGOING_CALL");
filter.setPriority(Integer.MAX_VALUE);
// 外拨电话广播
registerReceiver(outGoingCallReceiver, filter);
private class MyOutGoingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String number = getResultData();
String location = Apputils.getLocationFormNumber(number, context);
//1.使用WindowManager拿到系统的服务
WindowManager mWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
//2.给addView的第一个参数填充属性
TextView tv = new TextView(context);
tv.setText(location);
tv.setTextColor(Color.RED);
tv.setTextSize(30);
//3.给addView的第二个参数:params填充属性
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE // 将不能触摸的标记注释掉
params.format = PixelFormat.TRANSLUCENT;
//下面这一行没用,删了
//params.windowAnimations=com.android.internal.R.style.Animation_Toast;
// 窗体的类型 分为三个级别的窗体 应用级别 子窗体级别 系统窗体级别
params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
params.setTitle("mzk");
//4.使用:给窗体添加上view
mWM.addView(view, params);
}
}
3、packageManager:拿到包的应用信息
注:作用的范围不同(getPackageInfo是整个的清单文件,而getApplicationInfo是application节点下的东西)
// 获得系统的包的管理
PackageManager manager = getPackageManager();
// PackageInfo是系统封装的一个javabean对象 对整个清单文件的封装
// 通过包管理获得包的信息
// 写入0代表所有的信息都要
PackageInfo info = manager.getPackageInfo(getPackageName(), 0);
// 得到项目清单文件的code和name
int versionCode = info.versionCode;
String versionName = info.versionName;
4、桌面部件AppWidgetProvider
注:虽然后缀是provider,其实是一个receiver(继承自BroadcastReceiver)
private AppWidgetManager manager;
manager = AppWidgetManager.getInstance(this);