各种通用方法
2015-11-03 13:56
381 查看
把资产目录里面的数据库写到SD卡上面
try { InputStream is = getResources().getAssets().open("antivirus.db"); File file = new File(Environment.getExternalStorageDirectory(), "antivirus.db"); FileOutputStream fos = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { fos.write(buffer, 0, len); } fos.flush(); fos.close(); is.close(); } catch (IOException e) { e.printStackTrace(); }
点击后退按钮,弹出对话框,然后杀死自己
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { new AlertDialog.Builder(MainActivity.this) .setTitle("真的要离开?") .setMessage("你确定要离开") .setPositiveButton("确定", new DialogInterface.OnClickListener({ public void onClick(DialogInterface dialog,int which) { App app = (App) getApplication(); AppManager.getAppManager().AppExit(); //杀死自己 android.os.Process.killProcess(android.os.Process.myPid()); } }).show(); } return true; }
子线程里面需要用到toast的标准用法
Looper.prepare(); Toast.makeText(getApplicationContext(), "备份完成", 1).show(); Looper.loop();
自定义toast
public static void showMyToast(Context context, int icon , String text){ Toast toast = new Toast(context); View view = View.inflate(context, R.layout.mytoast, null); TextView tv_toast = (TextView) view.findViewById(R.id.tv_toast); ImageView iv_toast = (ImageView) view.findViewById(R.id.iv_toast); tv_toast.setText(text); iv_toast.setImageResource(icon); toast.setView(view); toast.setDuration(Toast.LENGTH_SHORT); toast.show(); }
监听短信SMS
清单文件配置<!-- 配置一个短信的广播接收者,接收短信事件 --> <receiver android:name="com.xukunn.smsreceiver.SmsBroadcastReceiver"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> //4.2开始不提供这个API了,不能Alt+/提示出来,只能手动去添加 </intent-filter> </receiver>
权限 android.permission.RECEIVE_SMS
广播接收者
public class SmsBroadcastReceiver extends BroadcastReceiver { //pdu是ieee这个组织定义的短信的数据格式规范(一大堆的byte[],分别代表短信的类型,短信的接收时间,短信的发件人,服务短信号码) 有序广播。 @Override public void onReceive(Context context, Intent intent) { System.out.println("发现新的,短信到来了。。"); //取出来短信的数据 Object[] objs = (Object[]) intent.getExtras().get("pdus");//短信数组。固定写法!!!!!! for(Object obj : objs){ SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);//静态方法:把一组pdu类型的数据转成Message对象 String body = smsMessage.getMessageBody();//得到短信内容 String sender = smsMessage.getOriginatingAddress();//得到发件人地址 System.out.println("body:"+body); System.out.println("sender:"+sender); if("5556".equals(sender)){ abortBroadcast(); } } } }
把View对象挂载到窗体上面
public void showLoaction(String address) { 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_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; params.format = PixelFormat.TRANSLUCENT; params.type = WindowManager.LayoutParams.TYPE_TOAST; params.setTitle("Toast"); TextView view = new TextView(this); view.setText(address); WindowManager windowManager = (WindowManager) this.getSystemService(WINDOW_SERVICE); windowManager.addView(view, params); }
自定义title
public class CustomtitleActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* //1.隐藏掉系统的标题栏 //2.自定义的界面 上面显示出来的样式跟title类似 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main);*/ //第二种方式自定义title //告诉系统用自定义的title boolean flag = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); if(flag){ //设置系统的title为 自定义的那个资源文件 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); } } }
自定义dialog
<style name="CustomDialog" parent="android:style/Theme.Dialog"> <!-- 背景颜色及透明程度 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 是否有标题 --> <item name="android:windowNoTitle">true</item> <!-- 是否浮现在activity之上 --> <item name="android:windowIsFloating">true</item> <!-- 是否模糊 --> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowFrame">@null</item> </style>
自定义Notification
public void click(View view){ //1.创建notification 的管理器 NotificationManager manager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE); //2 .创建notification的实例 Notification notification = new Notification(); notification.flags = Notification.FLAG_AUTO_CANCEL; notification.icon = R.drawable.ic_launcher; notification.tickerText="自定义notification"; //notification.contentView; //远程的view 我们的view对象 是要显示在另外一个进程里面 另外一个程序里面 所以就需要一个remote view RemoteViews rv = new RemoteViews(getPackageName(), R.layout.custom_notification); rv.setTextViewText(R.id.textView1, "textview 自定义notification"); rv.setProgressBar(R.id.progressBar1, 100, 50, false); notification.contentView = rv; Intent intent = new Intent(this,DemoActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK); notification.contentIntent = pendingIntent; manager.notify(2, notification); }
给图片加边框
/** * 添加图片边框 * @param bmp * @return */ public static Bitmap addFrame(Bitmap bmp,int borderColor,int borderSize) { Bitmap bmpWithBorder = Bitmap.createBitmap(bmp.getWidth() + borderSize * 2, bmp.getHeight() + borderSize * 2, bmp.getConfig()); Canvas canvas = new Canvas(bmpWithBorder); canvas.drawColor(borderColor);//边框颜色 canvas.drawBitmap(bmp, borderSize, borderSize, null); return bmpWithBorder; }
获取各种系统服务
获取位置的服务 locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setCostAllowed(true); //设置是否允许产生费用 criteria.setSpeedRequired(true);//设置是否对速度敏感 criteria.setAltitudeRequired(true);//设置是否海拔敏感 criteria.setAccuracy(Criteria.ACCURACY_FINE); //设置准确的定位 coarse 大体的位置 criteria.setPowerRequirement(Criteria.POWER_MEDIUM); String provider = locationManager.getBestProvider(criteria, true); //获取手机位置信息的变化 locationManager.requestLocationUpdates(provider, 60000, 100, getListenerInstance()); 获得超级管理员 DevicePolicyManager manager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); manager.wipeData(0); //获取系统打电话的服务 TelephonyManager manager = (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE); //获取系统窗体服务 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
调节屏幕亮度
public void setBrightness(int level) { ContentResolver cr = getContentResolver(); Settings.System.putInt(cr, "screen_brightness", level); Window window = getWindow(); WindowManager.LayoutParams attributes = window.getAttributes(); float flevel = level; attributes.screenBrightness = flevel / 255; getWindow().setAttributes(attributes); }
获取mac地址
1、<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 2、private String getLocalMacAddress() { WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); }
获取SD卡状态
/** 获取存储卡路径 */ File sdcardDir=Environment.getExternalStorageDirectory(); /** StatFs 看文件系统空间使用情况 */ StatFs statFs=new StatFs(sdcardDir.getPath()); /** Block 的 size*/ Long blockSize=statFs.getBlockSize(); /** 总 Block 数量 */ Long totalBlocks=statFs.getBlockCount(); /** 已使用的 Block 数量 */ Long availableBlocks=statFs.getAvailableBlocks();
禁用home键
先禁止Home键,再在onKeyDown里处理按键值,点击Home键的时候就把程序关闭,或者随你怎么处理。 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(KeyEvent.KEYCODE_HOME==keyCode) android.os.Process.killProcess(android.os.Process.myPid()); return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 加权限禁止Home键 <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
开机启动
public class StartupReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent startupintent = new Intent(context,StrongTracks.class); startupintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(startupintent); } } 2)<receiver android:name=".StartupReceiver"> <intent-filter> <!-- 系统启动完成后会调用 --> <action android:name="android.intent.action.BOOT_COMPLETED"> </action> </intent-filter> </receiver>
获取对话框的位置,挪动
window =dialog.getWindow();// WindowManager.LayoutParams wl = window.getAttributes(); wl.x = x;//这两句设置了对话框的位置.0为中间 wl.y =y; wl.width =w; wl.height =h; wl.alpha =0.6f;// 这句设置了对话框的透明度
移动dialog位置
//修改对话框的位置 Window mWindow = dialog.getWindow(); WindowManager.LayoutParams lp = mWindow.getAttributes(); lp.x = 10; //新位置X坐标 lp.y = -100; //新位置Y坐标 dialog.onWindowAttributesChanged(lp);
获取各种窗体高度
//取得窗口属性 getWindowManager().getDefaultDisplay().getMetrics(dm); //窗口的宽度 int screenWidth = dm.widthPixels; //窗口高度 int screenHeight = dm.heightPixels; 二、获取状态栏高度 decorView是window中的最顶层view,可以从window中获取到decorView, 然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 于是,我们就可以算出状态栏的高度了。 view plain Rect frame = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; 三、获取标题栏高度 getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。 view plain int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); //statusBarHeight是上面所求的状态栏的高度 int titleBarHeight = contentTop - statusBarHeight
Android设置apn
ContentValues values = new ContentValues(); values.put(NAME, "CMCC cmwap"); values.put(APN, "cmwap"); values.put(PROXY, "10.0.0.172"); values.put(PORT, "80"); values.put(MMSPROXY, ""); values.put(MMSPORT, ""); values.put(USER, ""); values.put(SERVER, ""); values.put(PASSWORD, ""); values.put(MMSC, ""); values.put(TYPE, ""); values.put(MCC, "460"); values.put(MNC, "00"); values.put(NUMERIC, "46000"); reURI = getContentResolver().insert(Uri.parse("content://telephony/carriers"), values); //首选接入点"content://telephony/carriers/preferapn"
发送指令
out = process.getOutputStream(); out.write(("am start -a android.intent.action.VIEW -n com.android.browser/com.android.browser.BrowserActivity\n").getBytes()); out.flush(); InputStream in = process.getInputStream(); BufferedReader re = new BufferedReader(new InputStreamReader(in)); String line = null; while((line = re.readLine()) != null) { Log.d("conio","[result]"+line); }
相关文章推荐
- 无线开发知识
- listview item的问题
- Android Facebook分享功能实现
- 脱壳一 常见语言和编译器的EP入口地址内类型
- 并查集(转发)
- Best Time to Buy and Sell Stock IV
- tr:hover变色的问题
- 常见HTTP状态(304,200等)
- Hadoop安装过程
- 默默的一只小透明的编程之路---永远在开始的路上
- Best Time to Buy and Sell Stock III
- 对远程服务器的访问遭拒绝,因为不存在登录映射。
- Android5.0系统字库
- EasyAR尝鲜系列教程之自定义Marker的实现
- iOS 2D绘图详解(Quartz 2D)之Bitmap
- windows 64位 安装zookeeper
- [ mongoDB ] - 文档型数据库设计模式-如何存储树形数据
- Tomcat PermGen space的解决方案
- 关于Java的Classpath详解
- mysql事物和存储引擎以及php实现事物