2018-01-09Android開(kāi)發(fā)人員不得不收集的代碼

尺寸相關(guān)

dp與px轉(zhuǎn)換dp2pxpx2dp

sp與px轉(zhuǎn)換sp2pxpx2sp

各種單位轉(zhuǎn)換applyDimension

在onCreate()即可強(qiáng)行獲取View的尺寸forceGetViewSize

ListView中提前測(cè)量View尺寸measureView

設(shè)備相關(guān)

獲取設(shè)備MAC地址getMacAddress

獲取設(shè)備廠商例证,如XiaomigetManufacturer

獲取設(shè)備型號(hào)辜羊,如MI2SCgetModel

獲取設(shè)備SD卡是否可用isSDCardEnable

獲取設(shè)備SD卡路徑getSDCardPath

手機(jī)相關(guān)

判斷設(shè)備是否是手機(jī)isPhone

獲取手機(jī)的IMIEgetDeviceIMEI

獲取手機(jī)狀態(tài)信息getPhoneStatus

撥打電話callDial

發(fā)送短信sendSms

獲取手機(jī)聯(lián)系人getAllContactInfo

打開(kāi)手機(jī)聯(lián)系人界面點(diǎn)擊聯(lián)系人后便獲取該號(hào)碼getContantNum

獲取手機(jī)短信并保存到xml中getAllSMS

網(wǎng)絡(luò)相關(guān)

打開(kāi)網(wǎng)絡(luò)設(shè)置界面openWirelessSettings

判斷是否網(wǎng)絡(luò)連接isConnected

判斷wifi是否連接狀態(tài)isWifiConnected

獲取移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商名稱getNetworkOperatorName

獲取移動(dòng)終端類(lèi)型getPhoneType

獲取連接的網(wǎng)絡(luò)類(lèi)型(2G,3G,4G)getCurNetworkType

獲取當(dāng)前手機(jī)的網(wǎng)絡(luò)類(lèi)型(WIFI,2G,3G,4G)getNetWorkStatus

App相關(guān)

安裝指定路徑下的ApkinstallApk

卸載指定包名的AppuninstallApp

獲取App名稱getAppName

獲取當(dāng)前App版本號(hào)getVersonName

獲取當(dāng)前App版本CodegetVersionCode

打開(kāi)指定包名的AppopenOtherApp

打開(kāi)指定包名的App應(yīng)用信息界面showAppInfo

分享Apk信息shareApkInfo

獲取App信息的一個(gè)封裝類(lèi)(包名草描、版本號(hào)该抒、應(yīng)用信息慌洪、圖標(biāo)顶燕、名稱等)getAppInfos

判斷當(dāng)前App處于前臺(tái)還是后臺(tái)isApplicationBackground

屏幕相關(guān)

獲取手機(jī)分辨率getDeviceWidthgetDeviceHeight

獲取狀態(tài)欄高度getStatusBarHeight

獲取狀態(tài)欄高度+標(biāo)題欄(ActionBar)高度getTopBarHeight

獲取屏幕截圖snapShotWithStatusBar冈爹、snapShotWithoutStatusBar

設(shè)置透明狀態(tài)欄涌攻,需在setContentView之前調(diào)用

鍵盤(pán)相關(guān)

避免輸入法面板遮擋

動(dòng)態(tài)隱藏軟鍵盤(pán)hideSoftInput

點(diǎn)擊屏幕空白區(qū)域隱藏軟鍵盤(pán)

動(dòng)態(tài)顯示軟鍵盤(pán)showSoftInput

切換鍵盤(pán)顯示與否狀態(tài)toggleSoftInput

正則相關(guān)

正則工具類(lèi)

加解密相關(guān)

MD5加密encryptMD5

SHA加密encryptSHA

未歸類(lèi)

獲取服務(wù)是否開(kāi)啟isRunningService

更新Log

做這份整理只是想把它作為Android的一本小字典,當(dāng)遇到一些瑣碎問(wèn)題時(shí)频伤,不用再面向百度或者谷歌查詢API的使用恳谎,費(fèi)時(shí)費(fèi)力,這里有的話憋肖,大家盡管擼走因痛。希望它能逐日壯大起來(lái),期待你的Star和完善岸更,用途的話大家想把它們整理成工具類(lèi)或者什么的話都可以鸵膏,之后我也會(huì)封裝工具類(lèi)并分享之,但本篇只是提供查閱怎炊,畢竟看md比看類(lèi)文件要爽多了谭企,其中好多代碼我也是各種搜刮來(lái)的,也要謝謝各位的總結(jié)评肆,大部分代碼已驗(yàn)證過(guò)可行债查,如有錯(cuò)誤,請(qǐng)及時(shí)告之瓜挽,開(kāi)設(shè)QQ群提供討論盹廷,群號(hào):74721490

分類(lèi)已上傳至Github,傳送門(mén)→期待你的Star和完善

好了久橙,廢話不多說(shuō)俄占,開(kāi)始開(kāi)車(chē),嘟嘟......

尺寸相關(guān)

dp與px轉(zhuǎn)換

/**

* dp轉(zhuǎn)px

*/publicstaticintdp2px(Context context,floatdpValue){finalfloatscale = context.getResources().getDisplayMetrics().density;return(int) (dpValue * scale +0.5f);}/**

* px轉(zhuǎn)dp

*/publicstaticintpx2dp(Context context,floatpxValue){finalfloatscale = context.getResources().getDisplayMetrics().density;return(int) (pxValue / scale +0.5f);}

sp與px轉(zhuǎn)換

/**

* sp轉(zhuǎn)px

*/publicstaticintsp2px(Context context,floatspValue){finalfloatfontScale = context.getResources().getDisplayMetrics().scaledDensity;return(int) (spValue * fontScale +0.5f);}/**

* px轉(zhuǎn)sp

*/publicstaticintpx2sp(Context context,floatpxValue){finalfloatfontScale = context.getResources().getDisplayMetrics().scaledDensity;return(int) (pxValue / fontScale +0.5f);}

各種單位轉(zhuǎn)換

/**

* 各種單位轉(zhuǎn)換

* 該方法存在于TypedValue

*/publicstaticfloatapplyDimension(intunit,floatvalue, DisplayMetrics metrics){switch(unit) {caseTypedValue.COMPLEX_UNIT_PX:returnvalue;caseTypedValue.COMPLEX_UNIT_DIP:returnvalue * metrics.density;caseTypedValue.COMPLEX_UNIT_SP:returnvalue * metrics.scaledDensity;caseTypedValue.COMPLEX_UNIT_PT:returnvalue * metrics.xdpi * (1.0f/72);caseTypedValue.COMPLEX_UNIT_IN:returnvalue * metrics.xdpi;caseTypedValue.COMPLEX_UNIT_MM:returnvalue * metrics.xdpi * (1.0f/25.4f);? ? }return0;}

在onCreate()即可強(qiáng)行獲取View的尺寸

/**

* 在onCreate()即可強(qiáng)行獲取View的尺寸

*/publicstaticint[] forceGetViewSize(View view) {intwidthMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);intheightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);? ? view.measure(widthMeasureSpec, heightMeasureSpec);returnnewint[]{view.getMeasuredWidth(), view.getMeasuredHeight()};}

ListView中提前測(cè)量View尺寸

/**

* ListView中提前測(cè)量View尺寸

* 如headerView剥汤,用的時(shí)候拷貝到ListView中

*/privatevoidmeasureView(View view){? ? ViewGroup.LayoutParams p = view.getLayoutParams();if(p ==null) {? ? ? ? p =newViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,? ? ? ? ? ? ? ? ViewGroup.LayoutParams.WRAP_CONTENT);? ? }intwidth = ViewGroup.getChildMeasureSpec(0,0, p.width);intheight;inttempHeight = p.height;if(tempHeight >0) {? ? ? ? height = MeasureSpec.makeMeasureSpec(tempHeight,? ? ? ? ? ? ? ? MeasureSpec.EXACTLY);? ? }else{? ? ? ? height = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);? ? }? ? view.measure(width, height);}

設(shè)備相關(guān)

獲取設(shè)備MAC地址

/**

* 獲取設(shè)備MAC地址

* 需添加權(quán)限

*/publicstaticStringgetMacAddress(Context context){? ? String macAddress =null;? ? WifiManager wifi = (WifiManager) context? ? ? ? ? ? .getSystemService(Context.WIFI_SERVICE);? ? WifiInfo info = wifi.getConnectionInfo();if(null!= info ) {? ? ? ? macAddress = info.getMacAddress();if(null!= macAddress) {? ? ? ? ? ? macAddress = macAddress.replace(":","");? ? ? ? }? ? }returnmacAddress;}

獲取設(shè)備廠商颠放,如Xiaomi

/**

* 獲取設(shè)備廠商,如Xiaomi

*/publicstaticStringgetManufacturer(){? ? String MANUFACTURER = Build.MANUFACTURER;returnMANUFACTURER;}

獲取設(shè)備型號(hào)吭敢,如MI2SC

/**

* 獲取設(shè)備型號(hào),如MI2SC

*/publicstaticStringgetModel(){? ? String model = Build.MODEL;if(model !=null) {? ? ? ? model = model.trim().replaceAll("\\s*","");? ? }else{? ? ? ? model ="";? ? }returnmodel;}

獲取設(shè)備SD卡是否可用

/**

* 獲取設(shè)備SD卡是否可用

*/publicstaticbooleanisSDCardEnable(){returnEnvironment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());}

獲取設(shè)備SD卡路徑

/**

* 獲取設(shè)備SD卡路徑

*/publicstaticStringgetSDCardPath(){returnEnvironment.getExternalStorageDirectory().getAbsolutePath() + File.separator;}

手機(jī)相關(guān)

判斷設(shè)備是否是手機(jī)

/**

* 判斷設(shè)備是否是手機(jī)

*/publicstaticbooleanisPhone(Context context){? ? TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);returntm.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE;}

獲取手機(jī)的IMIE

/**

* 獲取當(dāng)前設(shè)備的IMIE暮芭,需與上面的isPhone一起使用

* 需添加權(quán)限

*/publicstaticStringgetDeviceIMEI(Context context){? ? String deviceId;if(isPhone(context)) {? ? ? ? TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);? ? ? ? deviceId = tm.getDeviceId();? ? }else{? ? ? ? deviceId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);? ? }returndeviceId;}

獲取手機(jī)狀態(tài)信息

/**

* 獲取手機(jī)狀態(tài)信息

* 需添加權(quán)限

* 返回如下

* DeviceId(IMEI) = 99000311726612

* DeviceSoftwareVersion = 00

* Line1Number =

* NetworkCountryIso = cn

* NetworkOperator = 46003

* NetworkOperatorName = 中國(guó)電信

* NetworkType = 6

* honeType = 2

* SimCountryIso = cn

* SimOperator = 46003

* SimOperatorName = 中國(guó)電信

* SimSerialNumber = 89860315045710604022

* SimState = 5

* SubscriberId(IMSI) = 460030419724900

* VoiceMailNumber = *86

*/publicstaticStringgetPhoneStatus(Context context){? ? TelephonyManager tm = (TelephonyManager) context? ? ? ? ? ? .getSystemService(Context.TELEPHONY_SERVICE);? ? String str ="";? ? str +="DeviceId(IMEI) = "+ tm.getDeviceId() +"\n";? ? str +="DeviceSoftwareVersion = "+ tm.getDeviceSoftwareVersion() +"\n";? ? str +="Line1Number = "+ tm.getLine1Number() +"\n";? ? str +="NetworkCountryIso = "+ tm.getNetworkCountryIso() +"\n";? ? str +="NetworkOperator = "+ tm.getNetworkOperator() +"\n";? ? str +="NetworkOperatorName = "+ tm.getNetworkOperatorName() +"\n";? ? str +="NetworkType = "+ tm.getNetworkType() +"\n";? ? str +="honeType = "+ tm.getPhoneType() +"\n";? ? str +="SimCountryIso = "+ tm.getSimCountryIso() +"\n";? ? str +="SimOperator = "+ tm.getSimOperator() +"\n";? ? str +="SimOperatorName = "+ tm.getSimOperatorName() +"\n";? ? str +="SimSerialNumber = "+ tm.getSimSerialNumber() +"\n";? ? str +="SimState = "+ tm.getSimState() +"\n";? ? str +="SubscriberId(IMSI) = "+ tm.getSubscriberId() +"\n";? ? str +="VoiceMailNumber = "+ tm.getVoiceMailNumber() +"\n";returnstr;}

撥打電話

// 需添加權(quán)限/**

* 撥打電話

*/publicstaticvoidcallDial(Context context, String phoneNumber){? ? context.startActivity(newIntent(Intent.ACTION_CALL, Uri.parse("tel:"+ phoneNumber)));}

發(fā)送短信

/**

* 發(fā)送短信

*/publicstaticvoidsendSms(Context context, String phoneNumber, String content){? ? Uri uri = Uri.parse("smsto:"+ (TextUtils.isEmpty(phoneNumber) ?"": phoneNumber));? ? Intent intent =newIntent(Intent.ACTION_SENDTO, uri);? ? intent.putExtra("sms_body", TextUtils.isEmpty(content) ?"": content);? ? context.startActivity(intent);}

獲取手機(jī)聯(lián)系人

/**

* 獲取手機(jī)聯(lián)系人

* 需添加權(quán)限

* 需添加權(quán)限

*/publicstaticList> getAllContactInfo(Context context) {? ? SystemClock.sleep(3000);? ? ArrayList> list =newArrayList>();// 1.獲取內(nèi)容解析者ContentResolver resolver = context.getContentResolver();// 2.獲取內(nèi)容提供者的地址:com.android.contacts// raw_contacts表的地址 :raw_contacts// view_data表的地址 : data// 3.生成查詢地址Uri raw_uri = Uri.parse("content://com.android.contacts/raw_contacts");? ? Uri date_uri = Uri.parse("content://com.android.contacts/data");// 4.查詢操作,先查詢r(jià)aw_contacts,查詢contact_id// projection : 查詢的字段Cursor cursor = resolver.query(raw_uri,newString[] {"contact_id"},null,null,null);// 5.解析cursorwhile(cursor.moveToNext()) {// 6.獲取查詢的數(shù)據(jù)String contact_id = cursor.getString(0);// cursor.getString(cursor.getColumnIndex("contact_id"));//getColumnIndex// : 查詢字段在cursor中索引值,一般都是用在查詢字段比較多的時(shí)候// 判斷contact_id是否為空if(!TextUtils.isEmpty(contact_id)) {//null? ""http:// 7.根據(jù)contact_id查詢view_data表中的數(shù)據(jù)// selection : 查詢條件// selectionArgs :查詢條件的參數(shù)// sortOrder : 排序// 空指針: 1.null.方法 2.參數(shù)為nullCursor c = resolver.query(date_uri,newString[] {"data1","mimetype"},"raw_contact_id=?",newString[] { contact_id },null);? ? ? ? ? ? HashMap map =newHashMap();// 8.解析cwhile(c.moveToNext()) {// 9.獲取數(shù)據(jù)String data1 = c.getString(0);? ? ? ? ? ? ? ? String mimetype = c.getString(1);// 10.根據(jù)類(lèi)型去判斷獲取的data1數(shù)據(jù)并保存if(mimetype.equals("vnd.android.cursor.item/phone_v2")) {// 電話map.put("phone", data1);? ? ? ? ? ? ? ? }elseif(mimetype.equals("vnd.android.cursor.item/name")) {// 姓名map.put("name", data1);? ? ? ? ? ? ? ? }? ? ? ? ? ? }// 11.添加到集合中數(shù)據(jù)list.add(map);// 12.關(guān)閉cursorc.close();? ? ? ? }? ? }// 12.關(guān)閉cursorcursor.close();returnlist;}

打開(kāi)手機(jī)聯(lián)系人界面點(diǎn)擊聯(lián)系人后便獲取該號(hào)碼

/**

* 打開(kāi)手機(jī)聯(lián)系人界面點(diǎn)擊聯(lián)系人后便獲取該號(hào)碼

* 參照以下代碼

*/privatevoidgetContantNum(){/*

? ? Intent intent = new Intent();

? ? intent.setAction("android.intent.action.PICK");

? ? intent.addCategory("android.intent.category.DEFAULT");

? ? intent.setType("vnd.android.cursor.dir/phone_v2");

? ? startActivityForResult(intent, 0);

? ? @Override

? ? protected void onActivityResult ( int requestCode, int resultCode, Intent data){

? ? ? ? super.onActivityResult(requestCode, resultCode, data);

? ? ? ? if (data != null) {

? ? ? ? ? ? Uri uri = data.getData();

? ? ? ? ? ? String num = null;

? ? ? ? ? ? // 創(chuàng)建內(nèi)容解析者

? ? ? ? ? ? ContentResolver contentResolver = getContentResolver();

? ? ? ? ? ? Cursor cursor = contentResolver.query(uri,

? ? ? ? ? ? ? ? ? ? null, null, null, null);

? ? ? ? ? ? while (cursor.moveToNext()) {

? ? ? ? ? ? ? ? num = cursor.getString(cursor.getColumnIndex("data1"));

? ? ? ? ? ? }

? ? ? ? ? ? cursor.close();

? ? ? ? ? ? num = num.replaceAll("-", "");//替換的操作,555-6 -> 5556

? ? ? ? }

? ? }

? ? */}

獲取手機(jī)短信并保存到xml中

/**

* 獲取手機(jī)短信并保存到xml中

* 需添加權(quán)限

* 需添加權(quán)限

*/publicstaticvoidgetAllSMS(Context context){//1.獲取短信//1.1獲取內(nèi)容解析者ContentResolver resolver = context.getContentResolver();//1.2獲取內(nèi)容提供者地址? sms,sms表的地址:null? 不寫(xiě)//1.3獲取查詢路徑Uri uri = Uri.parse("content://sms");//1.4.查詢操作//projection : 查詢的字段//selection : 查詢的條件//selectionArgs : 查詢條件的參數(shù)//sortOrder : 排序Cursor cursor = resolver.query(uri,newString[]{"address","date","type","body"},null,null,null);//設(shè)置最大進(jìn)度intcount = cursor.getCount();//獲取短信的個(gè)數(shù)//2.備份短信//2.1獲取xml序列器XmlSerializer xmlSerializer = Xml.newSerializer();try{//2.2設(shè)置xml文件保存的路徑//os : 保存的位置//encoding : 編碼格式xmlSerializer.setOutput(newFileOutputStream(newFile("/mnt/sdcard/backupsms.xml")),"utf-8");//2.3設(shè)置頭信息//standalone : 是否獨(dú)立保存xmlSerializer.startDocument("utf-8",true);//2.4設(shè)置根標(biāo)簽xmlSerializer.startTag(null,"smss");//1.5.解析cursorwhile(cursor.moveToNext()) {? ? ? ? ? ? SystemClock.sleep(1000);//2.5設(shè)置短信的標(biāo)簽xmlSerializer.startTag(null,"sms");//2.6設(shè)置文本內(nèi)容的標(biāo)簽xmlSerializer.startTag(null,"address");? ? ? ? ? ? String address = cursor.getString(0);//2.7設(shè)置文本內(nèi)容xmlSerializer.text(address);? ? ? ? ? ? xmlSerializer.endTag(null,"address");? ? ? ? ? ? xmlSerializer.startTag(null,"date");? ? ? ? ? ? String date = cursor.getString(1);? ? ? ? ? ? xmlSerializer.text(date);? ? ? ? ? ? xmlSerializer.endTag(null,"date");? ? ? ? ? ? xmlSerializer.startTag(null,"type");? ? ? ? ? ? String type = cursor.getString(2);? ? ? ? ? ? xmlSerializer.text(type);? ? ? ? ? ? xmlSerializer.endTag(null,"type");? ? ? ? ? ? xmlSerializer.startTag(null,"body");? ? ? ? ? ? String body = cursor.getString(3);? ? ? ? ? ? xmlSerializer.text(body);? ? ? ? ? ? xmlSerializer.endTag(null,"body");? ? ? ? ? ? xmlSerializer.endTag(null,"sms");? ? ? ? ? ? System.out.println("address:"+ address +"? date:"+ date +"? type:"+ type +"? body:"+ body);? ? ? ? }? ? ? ? xmlSerializer.endTag(null,"smss");? ? ? ? xmlSerializer.endDocument();//2.8將數(shù)據(jù)刷新到文件中xmlSerializer.flush();? ? }catch(Exception e) {// TODO Auto-generated catch blocke.printStackTrace();? ? }}

網(wǎng)絡(luò)相關(guān)

打開(kāi)網(wǎng)絡(luò)設(shè)置界面

/**

* 打開(kāi)網(wǎng)絡(luò)設(shè)置界面

* 3.0以下打開(kāi)設(shè)置界面

*/publicstaticvoidopenWirelessSettings(Context context){if(android.os.Build.VERSION.SDK_INT >10) {? ? ? ? context.startActivity(newIntent(android.provider.Settings.ACTION_SETTINGS));? ? }else{? ? ? ? context.startActivity(newIntent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));? ? }}

判斷是否網(wǎng)絡(luò)連接

/**

* 判斷是否網(wǎng)絡(luò)連接

* 需添加權(quán)限

*/publicstaticbooleanisConnected(Context context){? ? ConnectivityManager cm = (ConnectivityManager) context? ? ? ? ? ? .getSystemService(Activity.CONNECTIVITY_SERVICE);? ? NetworkInfo info = cm.getActiveNetworkInfo();returninfo !=null&& info.isConnected();}

判斷wifi是否連接狀態(tài)

/**

* 判斷wifi是否連接狀態(tài)

* 需添加權(quán)限

*/publicstaticbooleanisWifiConnected(Context context){? ? ConnectivityManager cm = (ConnectivityManager) context? ? ? ? ? ? .getSystemService(Context.CONNECTIVITY_SERVICE);returncm !=null&& cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;}

獲取移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商名稱

/**

* 獲取移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商名稱

* 如中國(guó)聯(lián)通鹿驼、中國(guó)移動(dòng)、中國(guó)電信

*/publicstaticStringgetNetworkOperatorName(Context context){? ? TelephonyManager tm = (TelephonyManager) context? ? ? ? ? ? .getSystemService(Context.TELEPHONY_SERVICE);returntm !=null? tm.getNetworkOperatorName() :null;}

獲取移動(dòng)終端類(lèi)型

/**

* 獲取移動(dòng)終端類(lèi)型

* PHONE_TYPE_NONE? : 0 手機(jī)制式未知

* PHONE_TYPE_GSM? : 1 手機(jī)制式為GSM辕宏,移動(dòng)和聯(lián)通

* PHONE_TYPE_CDMA? : 2 手機(jī)制式為CDMA畜晰,電信

* PHONE_TYPE_SIP? : 3

*/publicstaticintgetPhoneType(Context context){? ? TelephonyManager tm = (TelephonyManager) context? ? ? ? ? ? .getSystemService(Context.TELEPHONY_SERVICE);returntm !=null? tm.getPhoneType() : -1;}

獲取連接的網(wǎng)絡(luò)類(lèi)型(2G,3G,4G)

/**

* 獲取連接的網(wǎng)絡(luò)類(lèi)型(2G,3G,4G)

* 聯(lián)通的3G為UMTS或HSDPA,移動(dòng)和聯(lián)通的2G為GPRS或EGDE瑞筐,電信的2G為CDMA凄鼻,電信的3G為EVDO

*/publicstaticintgetNetTpye(Context context){? ? TelephonyManager telephonyManager = (TelephonyManager) context? ? ? ? ? ? .getSystemService(Context.TELEPHONY_SERVICE);switch(telephonyManager.getNetworkType()) {caseTelephonyManager.NETWORK_TYPE_GPRS:caseTelephonyManager.NETWORK_TYPE_EDGE:caseTelephonyManager.NETWORK_TYPE_CDMA:caseTelephonyManager.NETWORK_TYPE_1xRTT:caseTelephonyManager.NETWORK_TYPE_IDEN:returnConstants.NETWORK_CLASS_2_G;caseTelephonyManager.NETWORK_TYPE_UMTS:caseTelephonyManager.NETWORK_TYPE_EVDO_0:caseTelephonyManager.NETWORK_TYPE_EVDO_A:caseTelephonyManager.NETWORK_TYPE_HSDPA:caseTelephonyManager.NETWORK_TYPE_HSUPA:caseTelephonyManager.NETWORK_TYPE_HSPA:caseTelephonyManager.NETWORK_TYPE_EVDO_B:caseTelephonyManager.NETWORK_TYPE_EHRPD:caseTelephonyManager.NETWORK_TYPE_HSPAP:returnConstants.NETWORK_CLASS_3_G;caseTelephonyManager.NETWORK_TYPE_LTE:returnConstants.NETWORK_CLASS_4_G;default:returnConstants.NETWORK_CLASS_UNKNOWN;? ? }}publicclassConstants{// Unknown network classpublicstaticfinalintNETWORK_CLASS_UNKNOWN =0;// wifi networkpublicstaticfinalintNETWORK_WIFI =1;// "2G" networkspublicstaticfinalintNETWORK_CLASS_2_G =2;// "3G" networkspublicstaticfinalintNETWORK_CLASS_3_G =3;// "4G" networkspublicstaticfinalintNETWORK_CLASS_4_G =4;}

獲取當(dāng)前手機(jī)的網(wǎng)絡(luò)類(lèi)型(WIFI,2G,3G,4G)

/**

* 獲取當(dāng)前手機(jī)的網(wǎng)絡(luò)類(lèi)型(WIFI,2G,3G,4G)

* 需添加權(quán)限

* 需要用到上面的方法

*/publicstaticintgetCurNetworkType(Context context){intnetWorkType = Constants.NETWORK_CLASS_UNKNOWN;? ? ConnectivityManager cm = (ConnectivityManager) context? ? ? ? ? ? .getSystemService(Context.CONNECTIVITY_SERVICE);? ? NetworkInfo networkInfo = cm.getActiveNetworkInfo();if(networkInfo !=null&& networkInfo.isConnected()) {inttype = networkInfo.getType();if(type == ConnectivityManager.TYPE_WIFI) {? ? ? ? ? ? netWorkType = Constants.NETWORK_WIFI;? ? ? ? }elseif(type == ConnectivityManager.TYPE_MOBILE) {? ? ? ? ? ? netWorkType = getNetworkTpye(context);? ? ? ? }? ? }returnnetWorkType;}

App相關(guān)

安裝指定路徑下的Apk

/**

* 安裝指定路徑下的Apk

*/publicvoidinstallApk(String filePath){? ? Intent intent =newIntent();? ? intent.setAction("android.intent.action.VIEW");? ? intent.addCategory("android.intent.category.DEFAULT");? ? intent.setDataAndType(Uri.fromFile(newFile(filePath)),"application/vnd.android.package-archive");? ? startActivityForResult(intent,0);}

卸載指定包名的App

/**

* 卸載指定包名的App

*/publicvoiduninstallApp(String packageName){? ? Intent intent =newIntent();? ? intent.setAction("android.intent.action.DELETE");? ? intent.addCategory("android.intent.category.DEFAULT");? ? intent.setData(Uri.parse("package:"+ packageName));? ? startActivityForResult(intent,0);}

獲取App名稱

/**

* 獲取App名稱

*/publicstaticStringgetAppName(Context context){try{? ? ? ? PackageManager packageManager = context.getPackageManager();? ? ? ? PackageInfo packageInfo = packageManager.getPackageInfo(? ? ? ? ? ? ? ? context.getPackageName(),0);intlabelRes = packageInfo.applicationInfo.labelRes;returncontext.getResources().getString(labelRes);? ? }catch(NameNotFoundException e) {? ? ? ? e.printStackTrace();? ? }returnnull;}

獲取當(dāng)前App版本號(hào)

/**

* 獲取當(dāng)前App版本號(hào)

*/publicstaticStringgetVersionName(Context context){? ? String versionName =null;? ? PackageManager pm = context.getPackageManager();? ? PackageInfo info =null;try{? ? ? ? info = pm.getPackageInfo(context.getApplicationContext().getPackageName(),0);? ? }catch(NameNotFoundException e) {? ? ? ? e.printStackTrace();? ? }if(info !=null) {? ? ? ? versionName = info.versionName;? ? }returnversionName;}

獲取當(dāng)前App版本Code

/**

* 獲取當(dāng)前App版本Code

*/publicstaticintgetVersionCode(Context context){intversionCode =0;? ? PackageManager pm = context.getPackageManager();? ? PackageInfo info =null;try{? ? ? ? info = pm.getPackageInfo(context.getApplicationContext().getPackageName(),0);? ? }catch(PackageManager.NameNotFoundException e) {? ? ? ? e.printStackTrace();? ? }if(info !=null) {? ? ? ? versionCode = info.versionCode;? ? }returnversionCode;}

打開(kāi)指定包名的App

/**

* 打開(kāi)指定包名的App

*/publicvoidopenOtherApp(String packageName){? ? PackageManager manager = getPackageManager();? ? Intent launchIntentForPackage = manager.getLaunchIntentForPackage(packageName);if(launchIntentForPackage !=null) {? ? ? ? startActivity(launchIntentForPackage);? ? }}

打開(kāi)指定包名的App應(yīng)用信息界面

/**

* 打開(kāi)指定包名的App應(yīng)用信息界面

*/publicvoidshowAppInfo(String packageName){? ? Intent intent =newIntent();? ? intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");? ? intent.setData(Uri.parse("package:"+ packageName));? ? startActivity(intent);}

分享Apk信息

/**

* 分享Apk信息

*/publicvoidshareApkInfo(String info){? ? Intent intent =newIntent();? ? intent.setAction("android.intent.action.SEND");? ? intent.addCategory("android.intent.category.DEFAULT");? ? intent.setType("text/plain");? ? intent.putExtra(Intent.EXTRA_TEXT, info);? ? startActivity(intent);}

獲取App信息的一個(gè)封裝類(lèi)(包名、版本號(hào)、應(yīng)用信息块蚌、圖標(biāo)闰非、名稱等)

/**

* 獲取App信息的一個(gè)封裝類(lèi)(包名、版本號(hào)峭范、應(yīng)用信息财松、圖標(biāo)、名稱等)

*/publicclassAppEnging{publicstaticListgetAppInfos(Context context){? ? ? ? List list =newArrayList();//獲取應(yīng)用程序信息//包的管理者PackageManager pm = context.getPackageManager();//獲取系統(tǒng)中安裝到所有軟件信息List installedPackages = pm.getInstalledPackages(0);for(PackageInfo packageInfo : installedPackages) {//獲取包名String packageName = packageInfo.packageName;//獲取版本號(hào)String versionName = packageInfo.versionName;//獲取applicationApplicationInfo applicationInfo = packageInfo.applicationInfo;intuid = applicationInfo.uid;//獲取應(yīng)用程序的圖標(biāo)Drawable icon = applicationInfo.loadIcon(pm);//獲取應(yīng)用程序的名稱String name = applicationInfo.loadLabel(pm).toString();//是否是用戶程序//獲取應(yīng)用程序中相關(guān)信息,是否是系統(tǒng)程序和是否安裝到SD卡booleanisUser;intflags = applicationInfo.flags;if((applicationInfo.FLAG_SYSTEM & flags) == applicationInfo.FLAG_SYSTEM) {//系統(tǒng)程序isUser =false;? ? ? ? ? ? }else{//用戶程序isUser =true;? ? ? ? ? ? }//是否安裝到SD卡booleanisSD;if((applicationInfo.FLAG_EXTERNAL_STORAGE & flags) == applicationInfo.FLAG_EXTERNAL_STORAGE) {//安裝到了SD卡isSD =true;? ? ? ? ? ? }else{//安裝到手機(jī)中isSD =false;? ? ? ? ? ? }//添加到bean中AppInfo appInfo =newAppInfo(name, icon, packageName, versionName, isSD, isUser);//將bean存放到list集合list.add(appInfo);? ? ? ? }returnlist;? ? }}// 封裝軟件信息的bean類(lèi)classAppInfo{//名稱privateString name;//圖標(biāo)privateDrawable icon;//包名privateString packagName;//版本號(hào)privateString versionName;//是否安裝到SD卡privatebooleanisSD;//是否是用戶程序privatebooleanisUser;publicAppInfo(){super();? ? }publicAppInfo(String name, Drawable icon, String packagName,? ? ? ? ? ? ? ? ? String versionName,booleanisSD,booleanisUser){super();this.name = name;this.icon = icon;this.packagName = packagName;this.versionName = versionName;this.isSD = isSD;this.isUser = isUser;? ? }}

判斷當(dāng)前App處于前臺(tái)還是后臺(tái)

// 需添加// 并且必須是系統(tǒng)應(yīng)用該方法才有效/**

* 判斷當(dāng)前App處于前臺(tái)還是后臺(tái)

*/publicstaticbooleanisApplicationBackground(finalContext context){? ? ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);@SuppressWarnings("deprecation")? ? List tasks = am.getRunningTasks(1);if(!tasks.isEmpty()) {? ? ? ? ComponentName topActivity = tasks.get(0).topActivity;if(!topActivity.getPackageName().equals(context.getPackageName())) {returntrue;? ? ? ? }? ? }returnfalse;}

屏幕相關(guān)

獲取手機(jī)分辨率

/**

* 獲取屏幕的寬度px

*/publicstaticintgetDeviceWidth(Context context){? ? WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);? ? DisplayMetrics outMetrics =newDisplayMetrics();// 創(chuàng)建了一張白紙windowManager.getDefaultDisplay().getMetrics(outMetrics);// 給白紙?jiān)O(shè)置寬高returnoutMetrics.widthPixels;}/**

* 獲取屏幕的高度px

*/publicstaticintgetDeviceHeight(Context context){? ? WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);? ? DisplayMetrics outMetrics =newDisplayMetrics();// 創(chuàng)建了一張白紙windowManager.getDefaultDisplay().getMetrics(outMetrics);// 給白紙?jiān)O(shè)置寬高returnoutMetrics.heightPixels;}

獲取狀態(tài)欄高度

/**

* 獲取狀態(tài)欄高度

*/publicintgetStatusBarHeight(){intresult =0;intresourceId = getResources().getIdentifier("status_bar_height","dimen","android");if(resourceId >0) {? ? ? ? result = getResources().getDimensionPixelSize(resourceId);? ? }returnresult;}

獲取狀態(tài)欄高度+標(biāo)題欄(ActionBar)高度

/**

* 獲取狀態(tài)欄高度+標(biāo)題欄(ActionBar)高度

*/publicstaticintgetTopBarHeight(Activity activity){returnactivity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();}

獲取屏幕截圖

/**

* 獲取當(dāng)前屏幕截圖纱控,包含狀態(tài)欄

*/publicstaticBitmapsnapShotWithStatusBar(Activity activity){? ? View view = activity.getWindow().getDecorView();? ? view.setDrawingCacheEnabled(true);? ? view.buildDrawingCache();? ? Bitmap bmp = view.getDrawingCache();intwidth = getScreenWidth(activity);intheight = getScreenHeight(activity);? ? Bitmap bp =null;? ? bp = Bitmap.createBitmap(bmp,0,0, width, height);? ? view.destroyDrawingCache();returnbp;}/**

* 獲取當(dāng)前屏幕截圖辆毡,不包含狀態(tài)欄

*/publicstaticBitmapsnapShotWithoutStatusBar(Activity activity){? ? View view = activity.getWindow().getDecorView();? ? view.setDrawingCacheEnabled(true);? ? view.buildDrawingCache();? ? Bitmap bmp = view.getDrawingCache();? ? Rect frame =newRect();? ? activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);intstatusBarHeight = frame.top;intwidth = getScreenWidth(activity);intheight = getScreenHeight(activity);? ? Bitmap bp =null;? ? bp = Bitmap.createBitmap(bmp,0, statusBarHeight, width, height? ? ? ? ? ? - statusBarHeight);? ? view.destroyDrawingCache();returnbp;}

設(shè)置透明狀態(tài)欄,需在setContentView之前調(diào)用

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//透明狀態(tài)欄getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明導(dǎo)航欄getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}// 需在頂部控件布局中加入以下屬性讓內(nèi)容出現(xiàn)在狀態(tài)欄之下android:clipToPadding="true"android:fitsSystemWindows="true"

鍵盤(pán)相關(guān)

避免輸入法面板遮擋

// 在manifest.xml中activity中設(shè)置android:windowSoftInputMode="stateVisible|adjustResize"

動(dòng)態(tài)隱藏軟鍵盤(pán)

/**

* 動(dòng)態(tài)隱藏軟鍵盤(pán)

*/publicstaticvoidhideSoftInput(Activity activity){? ? View view = activity.getWindow().peekDecorView();if(view !=null) {? ? ? ? InputMethodManager inputmanger = (InputMethodManager) activity? ? ? ? ? ? ? ? .getSystemService(Context.INPUT_METHOD_SERVICE);? ? ? ? inputmanger.hideSoftInputFromWindow(view.getWindowToken(),0);? ? }}/**

* 動(dòng)態(tài)隱藏軟鍵盤(pán)

*/publicstaticvoidhideSoftInput(Context context, EditText edit){? ? edit.clearFocus();? ? InputMethodManager inputmanger = (InputMethodManager) context? ? ? ? ? ? .getSystemService(Context.INPUT_METHOD_SERVICE);? ? inputmanger.hideSoftInputFromWindow(edit.getWindowToken(),0);}

點(diǎn)擊屏幕空白區(qū)域隱藏軟鍵盤(pán)

// 方法1:在onTouch中處理甜害,未獲焦點(diǎn)則隱藏/**

* 在onTouch中處理舶掖,未獲焦點(diǎn)則隱藏

*/@OverridepublicbooleanonTouchEvent(MotionEvent event){if(null!=this.getCurrentFocus()) {? ? ? ? InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);returnmInputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),0);? ? }returnsuper.onTouchEvent(event);}// 方法2:根據(jù)EditText所在坐標(biāo)和用戶點(diǎn)擊的坐標(biāo)相對(duì)比,來(lái)判斷是否隱藏鍵盤(pán)尔店,需重寫(xiě)dispatchTouchEvent@OverridepublicbooleandispatchTouchEvent(MotionEvent ev){if(ev.getAction() == MotionEvent.ACTION_DOWN) {? ? ? ? View v = getCurrentFocus();if(isShouldHideKeyboard(v, ev)) {? ? ? ? ? ? hideKeyboard(v.getWindowToken());? ? ? ? }? ? }returnsuper.dispatchTouchEvent(ev);}/**

* 根據(jù)EditText所在坐標(biāo)和用戶點(diǎn)擊的坐標(biāo)相對(duì)比访锻,來(lái)判斷是否隱藏鍵盤(pán)

*/privatebooleanisShouldHideKeyboard(View v, MotionEvent event){if(v !=null&& (vinstanceofEditText)) {int[] l = {0,0};? ? ? ? v.getLocationInWindow(l);intleft = l[0],? ? ? ? ? ? ? ? top = l[1],? ? ? ? ? ? ? ? bottom = top + v.getHeight(),? ? ? ? ? ? ? ? right = left + v.getWidth();return!(event.getX() > left && event.getX() < right? ? ? ? ? ? ? ? && event.getY() > top && event.getY() < bottom);? ? }returnfalse;}/**

* 獲取InputMethodManager,隱藏軟鍵盤(pán)

*/privatevoidhideKeyboard(IBinder token){if(token !=null) {? ? ? ? InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);? ? ? ? im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);? ? }}

動(dòng)態(tài)顯示軟鍵盤(pán)

/**

* 動(dòng)態(tài)顯示軟鍵盤(pán)

*/publicstaticvoidshowSoftInput(Context context, EditText edit){? ? edit.setFocusable(true);? ? edit.setFocusableInTouchMode(true);? ? edit.requestFocus();? ? InputMethodManager inputManager = (InputMethodManager) context? ? ? ? ? ? .getSystemService(Context.INPUT_METHOD_SERVICE);? ? inputManager.showSoftInput(edit,0);}

切換鍵盤(pán)顯示與否狀態(tài)

/**

* 切換鍵盤(pán)顯示與否狀態(tài)

*/publicstaticvoidtoggleSoftInput(Context context, EditText edit){? ? edit.setFocusable(true);? ? edit.setFocusableInTouchMode(true);? ? edit.requestFocus();? ? InputMethodManager inputManager = (InputMethodManager) context? ? ? ? ? ? .getSystemService(Context.INPUT_METHOD_SERVICE);? ? inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);}

正則相關(guān)

正則工具類(lèi)

publicclassRegularUtils{//驗(yàn)證手機(jī)號(hào)privatestaticfinalString REGEX_MOBILE ="^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";//驗(yàn)證座機(jī)號(hào),正確格式:xxx/xxxx-xxxxxxx/xxxxxxxxprivatestaticfinalString REGEX_TEL ="^0\\d{2,3}[- ]?\\d{7,8}";//驗(yàn)證郵箱privatestaticfinalString REGEX_EMAIL ="^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";//驗(yàn)證urlprivatestaticfinalString REGEX_URL ="http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?";//驗(yàn)證漢字privatestaticfinalString REGEX_CHZ ="^[\\u4e00-\\u9fa5]+$";//驗(yàn)證用戶名,取值范圍為a-z,A-Z,0-9,"_",漢字闹获,不能以"_"結(jié)尾,用戶名必須是6-20位privatestaticfinalString REGEX_USERNAME ="^[\\w\\u4e00-\\u9fa5]{6,20}(?

加解密相關(guān)

MD5加密

/**

* MD5加密

*/publicstaticStringencryptMD5(String data)throwsException{? ? MessageDigest md5 = MessageDigest.getInstance("MD5");returnnewBigInteger(md5.digest(data.getBytes())).toString(16);}

SHA加密

/**

* SHA加密

*/publicstaticStringencryptSHA(String data)throws Exception{? ? MessageDigest sha = MessageDigest.getInstance("SHA");returnnewBigInteger(sha.digest(data.getBytes())).toString(32);}

未歸類(lèi)

獲取服務(wù)是否開(kāi)啟

/**

* 獲取服務(wù)是否開(kāi)啟

*/publicstaticbooleanisRunningService(String className, Context context){//進(jìn)程的管理者,活動(dòng)的管理者ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);//獲取正在運(yùn)行的服務(wù)List runningServices = activityManager.getRunningServices(1000);//maxNum 返回正在運(yùn)行的服務(wù)的上限個(gè)數(shù),最多返回多少個(gè)服務(wù)//遍歷集合for(RunningServiceInfo runningServiceInfo : runningServices) {//獲取控件的標(biāo)示ComponentName service = runningServiceInfo.service;//獲取正在運(yùn)行的服務(wù)的全類(lèi)名String className2 = service.getClassName();//將獲取到的正在運(yùn)行的服務(wù)的全類(lèi)名和傳遞過(guò)來(lái)的服務(wù)的全類(lèi)名比較,一直表示服務(wù)正在運(yùn)行? 返回true,不一致表示服務(wù)沒(méi)有運(yùn)行? 返回falseif(className.equals(className2)) {returntrue;? ? ? ? }? ? }returnfalse;}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末期犬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子避诽,更是在濱河造成了極大的恐慌龟虎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沙庐,死亡現(xiàn)場(chǎng)離奇詭異鲤妥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拱雏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)棉安,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人铸抑,你說(shuō)我怎么就攤上這事贡耽。” “怎么了鹊汛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蒲赂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我刁憋,道長(zhǎng)滥嘴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任至耻,我火速辦了婚禮若皱,結(jié)果婚禮上镊叁,老公的妹妹穿的比我還像新娘。我一直安慰自己走触,他們只是感情好晦譬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著饺汹,像睡著了一般蛔添。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兜辞,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天迎瞧,我揣著相機(jī)與錄音,去河邊找鬼逸吵。 笑死凶硅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扫皱。 我是一名探鬼主播足绅,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼韩脑!你這毒婦竟也來(lái)了氢妈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤段多,失蹤者是張志新(化名)和其女友劉穎首量,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體进苍,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡加缘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了觉啊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拣宏。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杠人,靈堂內(nèi)的尸體忽然破棺而出勋乾,到底是詐尸還是另有隱情,我是刑警寧澤搜吧,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布市俊,位于F島的核電站,受9級(jí)特大地震影響滤奈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撩满,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一蜒程、第九天 我趴在偏房一處隱蔽的房頂上張望绅你。 院中可真熱鬧,春花似錦昭躺、人聲如沸忌锯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)偶垮。三九已至,卻和暖如春帝洪,著一層夾襖步出監(jiān)牢的瞬間似舵,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工葱峡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砚哗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓砰奕,卻偏偏與公主長(zhǎng)得像蛛芥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子军援,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容