a、拿到系统服务:xxxManager = context.getSystemService(name.service)
ActivityManager am = (ActivityManager) getSystemService(accessIBILITY_SERVICE);b、直接通过上下文.getXXX形式获得
PackageManager pm = context.getPackageManager();c、通过实例获得
AppWidgetManager manager = AppWidgetManager.getInstance(this);吐司的原理就是,通过使用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); }}注:作用的范围不同(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;注:虽然后缀是provider,其实是一个receiver(继承自BroadcastReceiver)
private AppWidgetManager manager;manager = AppWidgetManager.getInstance(this);新闻热点
疑难解答