xxxManager常见的几种获取方法

来源:互联网 发布:java上传压缩包 编辑:程序博客网 时间:2024/06/07 02:28

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);
0 0