手机管理工具类 → AppPhoneMgr

来源:互联网 发布:苹果mac爱奇艺视频 编辑:程序博客网 时间:2024/06/06 05:17
  packagecom.jingewenku.abrahamcaijin.commonutil; import android.app.Activityimport android.app.PendingIntentimport android.content.*import android.content.pm.ApplicationInfoimport android.content.pm.PackageInfoimport android.content.pm.PackageManagerimport android.content.pm.PackageManager.NameNotFoundExceptionimport android.content.pm.ResolveInfoimport android.content.res.Configurationimport android.database.Cursorimport android.graphics.Bitmapimport android.net.Uriimport android.os.Environmentimport android.os.StatFsimport android.os.SystemClockimport android.provider.ContactsContractimport android.provider.MediaStoreimport android.provider.Settingsimport android.telephony.PhoneNumberUtilsimport android.telephony.SmsManagerimport android.telephony.TelephonyManagerimport android.util.Logimport android.util.Xmlimport android.view.WindowManagerimport android.widget.Toastimport com.jingewenku.abrahamcaijin.commonutil.klog.KLogimport org.xmlpull.v1.XmlSerializer;   import java.io.Fileimport java.io.FileOutputStreamimport java.util.ArrayListimport java.util.HashMapimport java.util.Listimport java.util.Map/** * 主要功能:手机管理工具类 * * @Prject: CommonUtilLibrary * @Package: com.jingewenku.abrahamcaijin.commonutil * @author: AbrahamCaiJin * @date: 2017年05月03日 16:29 * @Copyright: 个人版权所有 * @Company: * @version: 1.0.0 */   public class AppPhoneMgrprivate static AppPhoneMgr phoneUtil;   public static AppPhoneMgr getInstance() { if (phoneUtil == null) { synchronized (AppPhoneMgr.class) { if (phoneUtil == null) { phoneUtil = new AppPhoneMgr(); } } } return phoneUtil; }   /** * 获取手机系统版本号 * * @return */ public int getSDKVersionNumber() { int sdkVersion; try { sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK_INT); } catch (NumberFormatException e) { e.printStackTrace(); sdkVersion = 0; } return sdkVersion; }   /** * 获取手机型号 */ public String getPhoneModel() { return android.os.Build.MODEL; }   /** * 获取手机宽度 */ @SuppressWarnings("deprecation"public int getPhoneWidth(Contextcontext) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); return wm.getDefaultDisplay().getWidth(); }   /** * 获取手机高度 * * @param context */ @SuppressWarnings("deprecation"public int getPhoneHeight(Contextcontext) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); return wm.getDefaultDisplay().getHeight(); }   /** * 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. * * @param context */ public String getPhoneImei(Contextcontext) { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if (tm == nullreturn nullreturn tm.getDeviceId(); }   /** * 获取手机sim卡号 * * @param context */ public String getPhoneSim(Contextcontext) { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if (tm == nullreturn nullreturn tm.getSubscriberId(); }   /** * 获取手机号 * * @param context */ public String getPhoneNum(Contextcontext) { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if (tm == nullreturn nullreturn tm.getLine1Number(); }   /** * 判断sd卡是否挂载 */ public boolean isSDCardMount() { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { return true; } elsereturn false; } }   /** * 获取sd卡剩余空间的大小 */ @SuppressWarnings("deprecation"public long getSDFreeSize() { File path = Environment.getExternalStorageDirectory();// 取得SD卡文件路径 StatFs sf = new StatFs(path.getPath()); long blockSize = sf.getBlockSize();// 获取单个数据块的大小(Byte) long freeBlocks = sf.getAvailableBlocks();// 空闲的数据块的数量 // 返回SD卡空闲大小 return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB }   /** * 获取sd卡空间的总大小 */ @SuppressWarnings("deprecation"public long getSDAllSize() { File path = Environment.getExternalStorageDirectory();// 取得SD卡文件路径 StatFs sf = new StatFs(path.getPath()); long blockSize = sf.getBlockSize();// 获取单个数据块的大小(Byte) long allBlocks = sf.getBlockCount();// 获取所有数据块数 // 返回SD卡大小 return (allBlocks * blockSize) / 1024 / 1024; // 单位MB }   /** * 判断是否是平板 */ public boolean isTablet(Contextcontext) { return (context.getResources().getConfiguration().screenLayout& Configuration.SCREENLAYOUT_SIZE_MASK)>= Configuration.SCREENLAYOUT_SIZE_LARGE; }   /** * 判断一个apk是否安装 * * @param context * @param packageName */ public boolean isApkInstalled(Contextcontext, String packageName) { PackageManager pm = context.getPackageManager(); try { pm.getPackageInfo(packageName,0); } catch (NameNotFoundException e) { return false; } return true; }   // /** // * 拨打电话 // * // * @param context // * @param phoneNum // */ // public void call(Context context, String phoneNum) throws Exception { // if (phoneNum != null && !phoneNum.equals("")) { // Uri uri = Uri.parse("tel:" + phoneNum); // Intent intent = new Intent(Intent.ACTION_DIAL, uri); // context.startActivity(intent); // } // }   // /** // * 打开网页 // */ // public void openWeb(Context context, String url) { // try { // Uri uri = Uri.parse(url); // context.startActivity(new Intent(Intent.ACTION_VIEW, uri)); // } catch (Exception e) { // e.printStackTrace(); // } // }   /** * 获取应用权限 名称列表 */ public String[] getAppPermissions(Contextcontextthrows NameNotFoundExceptionPackageManager pm = context.getPackageManager(); PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS); return getAppPermissions(packageInfo); }   public String[] getAppPermissions(PackageInfopackageInfothrows NameNotFoundExceptionreturn packageInfo.requestedPermissions; }   /** * 获取手机内安装的应用 */ public List<PackageInfo> getInstalledApp(Context context) { PackageManager pm = context.getPackageManager(); return pm.getInstalledPackages(0); }   /** * 获取手机安装非系统应用 */ @SuppressWarnings("static-access"public List<PackageInfo> getUserInstalledApp(Context context) { List<PackageInfo> infos= getInstalledApp(context); List<PackageInfo> apps= new ArrayList<PackageInfo>(); for (PackageInfo info: infos) { if ((info.applicationInfo.flags& info.applicationInfo.FLAG_SYSTEM)<= 0) { apps.add(info); } } infos.clear(); infos = nullreturn apps; }   /** * 获取安装应用的信息 */ public Map<String, Object> getInstalledAppInfo(ContextcontextPackageInfo info) { Map<String,Object> appInfos = new HashMap<String, Object>(); PackageManager pm = context.getPackageManager(); ApplicationInfo aif = info.applicationInfo; appInfos.put("icon", pm.getApplicationIcon(aif)); appInfos.put("lable", pm.getApplicationLabel(aif)); appInfos.put("packageName", aif.packageName); return appInfos; }   /** * 打开指定包名的应用 */ public void startAppPkg(Contextcontext, String pkg) { Intent startIntent = context.getPackageManager() .getLaunchIntentForPackage(pkg); startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(startIntent); }   /** * 卸载指定包名的应用 */ public void unInstallApk(Contextcontext, String packageName) { Uri uri = Uri.parse("package:"+ packageName); Intent intent = new Intent(Intent.ACTION_DELETE); intent.setData(uri); context.startActivity(intent); }   // /** // * 手机号判断 // */ // public static boolean isMobileNO(String mobile) { // Pattern p = Pattern // .compile("^((145|147)|(15[^4])|(17[0-9])|((13|18)[0-9]))\\d{8}$"); // Matcher m = p.matcher(mobile); // return m.matches(); // }   /** * 直接呼叫指定的号码(需要<uses-permission * android:name="android.permission.CALL_PHONE"/>权限) * * @param mContext * 上下文Context * @param phoneNumber * 需要呼叫的手机号码 */ public static void callPhone(Context mContext, String phoneNumber) { Uri uri = Uri.parse("tel:"+ phoneNumber); Intent call = new Intent(Intent.ACTION_CALL, uri); mContext.startActivity(call); }   /** * 跳转至拨号界面 * * @param mContext * 上下文Context * @param phoneNumber * 需要呼叫的手机号码 */ public static void toCallPhoneActivity(Context mContext, String phoneNumber) { Uri uri = Uri.parse("tel:"+ phoneNumber); Intent call = new Intent(Intent.ACTION_DIAL, uri); mContext.startActivity(call); }   /** * 直接调用短信API发送信息(设置监听发送和接收状态) * * @param strPhone * 手机号码 * @param strMsgContext * 短信内容 */ public static void sendMessage(final Context mContextfinal String strPhone, final String strMsgContext) {   // 处理返回的发送状态 String SENT_SMS_ACTION = "SENT_SMS_ACTION"Intent sentIntent = new Intent(SENT_SMS_ACTION); PendingIntent sendIntent = PendingIntent.getBroadcast(mContext,0, sentIntent, 0); // register the Broadcast Receivers mContext.registerReceiver(newBroadcastReceiver() { @Override public void onReceive(Context_context, Intent _intent) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(mContext,"短信发送成功",Toast.LENGTH_SHORT) .show(); breakcase SmsManager.RESULT_ERROR_GENERIC_FAILURE: breakcase SmsManager.RESULT_ERROR_RADIO_OFF: breakcase SmsManager.RESULT_ERROR_NULL_PDU: break; } } }, new IntentFilter(SENT_SMS_ACTION));   // 处理返回的接收状态 String DELIVERED_SMS_ACTION ="DELIVERED_SMS_ACTION"// create the deilverIntent parameter Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION); PendingIntent backIntent = PendingIntent.getBroadcast(mContext,0, deliverIntent, 0); mContext.registerReceiver(newBroadcastReceiver() { @Override public void onReceive(Context_context, Intent _intent) { Toast.makeText(mContext, strPhone+ "已经成功接收"Toast.LENGTH_SHORT).show(); } }, new IntentFilter(DELIVERED_SMS_ACTION));   // 拆分短信内容(手机短信长度限制) SmsManager smsManager = SmsManager.getDefault(); ArrayList<String> msgList= smsManager.divideMessage(strMsgContext); for (String text: msgList) { smsManager.sendTextMessage(strPhone,null, text, sendIntent, backIntent); } }   /** * 跳转至发送短信界面(自动设置接收方的号码) * * @param mContext * Activity * @param strPhone * 手机号码 * @param strMsgContext * 短信内容 */ public static void toSendMessageActivity(Context mContext, String strPhoneString strMsgContext) { if (PhoneNumberUtils.isGlobalPhoneNumber(strPhone)) { Uri uri = Uri.parse("smsto:"+ strPhone); Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri); sendIntent.putExtra("sms_body", strMsgContext); mContext.startActivity(sendIntent); } }   /** * 跳转至联系人选择界面 * * @param mContext * 上下文 * @param requestCode * 请求返回区分代码 */ public static void toChooseContactsList(Activity mContext, int requestCode) { Intent intent = new Intent(Intent.ACTION_PICKContactsContract.Contacts.CONTENT_URI); mContext.startActivityForResult(intent, requestCode); }   /** * 获取选择的联系人的手机号码 * * @param mContext * 上下文 * @param resultCode * 请求返回Result状态区分代码 * @param data * onActivityResult返回的Intent * @return */ @SuppressWarnings("deprecation"public static String getChoosedPhoneNumber(Activity mContextint resultCode, Intent data) { // 返回结果 String phoneResult = ""if (Activity.RESULT_OK== resultCode) { Uri uri = data.getData(); Cursor mCursor = mContext.managedQuery(uri,null, null, null, null); mCursor.moveToFirst();   int phoneColumn = mCursor .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); int phoneNum = mCursor.getInt(phoneColumn); if (phoneNum > 0) { // 获得联系人的ID号 int idColumn = mCursor .getColumnIndex(ContactsContract.Contacts._ID); String contactId = mCursor.getString(idColumn); // 获得联系人的电话号码的cursor; Cursor phones = mContext.getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URInullContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "+ contactId, null, null); if (phones.moveToFirst()) { // 遍历所有的电话号码 for (; !phones.isAfterLast(); phones.moveToNext()) { int index = phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); int typeindex = phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); int phone_type = phones.getInt(typeindex); String phoneNumber = phones.getString(index); if (phone_type == 2) { phoneResult = phoneNumber; } } if (!phones.isClosed()) { phones.close(); } } } // 关闭游标 mCursor.close(); }   return phoneResult; }   /** * 跳转至拍照程序界面 * * @param mContext * 上下文 * @param requestCode * 请求返回Result区分代码 */ public static void toCameraActivity(Activity mContext, int requestCode) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); mContext.startActivityForResult(intent, requestCode); }   /** * 跳转至相册选择界面 * * @param mContext * 上下文 * @param requestCode */ public static void toImagePickerActivity(Activity mContext, int requestCode) { Intent intent = new Intent(Intent.ACTION_PICK,null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI"image/*"); mContext.startActivityForResult(intent, requestCode); }   /** * 获得选中相册的图片 * * @param mContext * 上下文 * @param data * onActivityResult返回的Intent * @return */   @SuppressWarnings({ "deprecation","unused" }) public static Bitmap getChoosedImage(Activity mContext, Intent data) { if (data == null) { return null; }   Bitmap bm = null;   // 外界的程序访问ContentProvider所提供数据 可以通过ContentResolver接口 ContentResolver resolver = mContext.getContentResolver();   // 此处的用于判断接收的Activity是不是你想要的那个 tryUri originalUri = data.getData(); // 获得图片的uri bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); // 显得到bitmap图片 // 这里开始的第二部分,获取图片的路径: String[] proj = { MediaStore.Images.Media.DATA }; // 好像是android多媒体数据库的封装接口,具体的看Android文档 Cursor cursor = mContext.managedQuery(originalUri, proj,nullnull, null); // 按我个人理解 这个是获得用户选择的图片的索引值 int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); // 将光标移至开头 ,这个很重要,不小心很容易引起越界 cursor.moveToFirst(); // 最后根据索引值获取图片路径 String path = cursor.getString(column_index); // 不用了关闭游标 cursor.close(); } catch (Exception e) { KLog.e("ToolPhone", e.getMessage()); }   return bm; }   /** * 调用本地浏览器打开一个网页 * * @param mContext * 上下文 * @param strSiteUrl * 网页地址 */ public static void openWebSite(Context mContext, String strSiteUrl) { Intent webIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(strSiteUrl)); mContext.startActivity(webIntent); }   /** * 跳转至系统设置界面 * * @param mContext * 上下文 */ public static void toSettingActivity(Context mContext) { Intent settingsIntent = new Intent(Settings.ACTION_SETTINGS); mContext.startActivity(settingsIntent); }   /** * 跳转至WIFI设置界面 * * @param mContext * 上下文 */ public static void toWIFISettingActivity(Context mContext) { Intent wifiSettingsIntent = new Intent(Settings.ACTION_WIFI_SETTINGS); mContext.startActivity(wifiSettingsIntent); }   /** * 启动本地应用打开PDF * * @param mContext * 上下文 * @param filePath * 文件路径 */ public static void openPDFFile(Context mContext, String filePath) { tryFile file = new File(filePath); if (file.exists()) { Uri path = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(path,"application/pdf"); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); mContext.startActivity(intent); } } catch (Exception e) { Toast.makeText(mContext,"未检测到可打开PDF相关软件",Toast.LENGTH_SHORT) .show(); } }   /** * 启动本地应用打开PDF * * @param mContext * 上下文 * @param filePath * 文件路径 */ public static void openWordFile(Context mContext, String filePath) { tryFile file = new File(filePath); if (file.exists()) { Uri path = Uri.fromFile(file); Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(path,"application/msword"); mContext.startActivity(intent); } } catch (Exception e) { Toast.makeText(mContext,"未检测到可打开Word文档相关软件",Toast.LENGTH_SHORT) .show(); } }   /** * 调用WPS打开office文档 http://bbs.wps.cn/thread-22349340-1-1.html * * @param mContext * 上下文 * @param filePath * 文件路径 */ public static void openOfficeByWPS(Context mContext, String filePath) {   try {   // 文件存在性检查 File file = new File(filePath); if (!file.exists()) { Toast.makeText(mContext, filePath+ "文件路径不存在"Toast.LENGTH_SHORT).show(); return; }   // 检查是否安装WPS String wpsPackageEng = "cn.wps.moffice_eng";// 普通版与英文版一样 // String wpsActivity = // "cn.wps.moffice.documentmanager.PreStartActivity"; String wpsActivity2 = "cn.wps.moffice.documentmanager.PreStartActivity2";// 默认第三方程序启动   Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setClassName(wpsPackageEng, wpsActivity2);   Uri uri = Uri.fromFile(newFile(filePath)); intent.setData(uri); mContext.startActivity(intent);   } catch (ActivityNotFoundException e) { Toast.makeText(mContext,"本地未安装WPS",Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(mContext,"打开文档失败",Toast.LENGTH_SHORT).show(); } }   /** * 判断是否安装指定包名的APP * * @param mContext * 上下文 * @param packageName * 包路径 * @return */ @SuppressWarnings("unused"public static boolean isInstalledApp(Context mContext, String packageName) { if (packageName == null || "".equals(packageName)) { return false; }   tryApplicationInfo info = mContext.getPackageManager() .getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); return true; } catch (NameNotFoundException e) { return false; } }   /** * 判断是否存在指定的Activity * * @param mContext * 上下文 * @param packageName * 包名 * @param className * activity全路径类名 * @return */ public static boolean isExistActivity(Context mContext, String packageNameString className) {   Boolean result = trueIntent intent = new Intent(); intent.setClassName(packageName, className);   if (mContext.getPackageManager().resolveActivity(intent,0) == null) { result = false; } else if (intent.resolveActivity(mContext.getPackageManager())== null) { result = false; } elseList<ResolveInfo> list= mContext.getPackageManager() .queryIntentActivities(intent, 0); if (list.size()== 0) { result = false; } }   return result; }       /** * 获取移动终端类型 * * @param context 上下文 * @return 手机制式 * <ul> * <li>{@link TelephonyManager#PHONE_TYPE_NONE } : 0 手机制式未知</li> * <li>{@link TelephonyManager#PHONE_TYPE_GSM } : 1 手机制式为GSM,移动和联通</li> * <li>{@link TelephonyManager#PHONE_TYPE_CDMA } : 2 手机制式为CDMA,电信</li> * <li>{@link TelephonyManager#PHONE_TYPE_SIP } : 3</li> * </ul> */ public static int getPhoneType(Context context) { TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); return tm != null ? tm.getPhoneType(): -1; }     /** * 判断sim卡是否准备好 * * @return {@code true}: 是<br>{@code false}: 否 */ public static boolean isSimCardReady(Context context) { TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); return tm != null && tm.getSimState()== TelephonyManager.SIM_STATE_READY; }   /** * 获取手机状态信息 * <p>需添加权限 {@code <uses-permission android:name="android.permission.READ_PHONE_STATE"/>}</p> * * @param context 上下文 * @return DeviceId(IMEI) = 99000311726612<br> * DeviceSoftwareVersion = 00<br> * Line1Number =<br> * NetworkCountryIso = cn<br> * NetworkOperator = 46003<br> * NetworkOperatorName = 中国电信<br> * NetworkType = 6<br> * honeType = 2<br> * SimCountryIso = cn<br> * SimOperator = 46003<br> * SimOperatorName = 中国电信<br> * SimSerialNumber = 89860315045710604022<br> * SimState = 5<br> * SubscriberId(IMSI) = 460030419724900<br> * VoiceMailNumber = *86<br> */ public static String getPhoneStatus(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"return str; }   /** * 获取手机短信并保存到xml中 * <p>需添加权限 {@code <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>}</p> * <p>需添加权限 {@code <uses-permission android:name="android.permission.READ_SMS"/>}</p> * * @param context 上下文 */ public static void getAllSMS(Context context) { // 1.获取短信 // 1.1获取内容解析者 ContentResolver resolver = context.getContentResolver(); // 1.2获取内容提供者地址 sms,sms表的地址:null 不写 // 1.3获取查询路径 Uri uri = Uri.parse("content://sms"); // 1.4.查询操作 // projection : 查询的字段 // selection : 查询的条件 // selectionArgs : 查询条件的参数 // sortOrder : 排序 Cursor cursor = resolver.query(uri,new String[]{"address","date","type","body"},null, null, null); // 设置最大进度 int count = cursor.getCount();//获取短信的个数 // 2.备份短信 // 2.1获取xml序列器 XmlSerializer xmlSerializer = Xml.newSerializer(); try// 2.2设置xml文件保存的路径 // os : 保存的位置 // encoding : 编码格式 xmlSerializer.setOutput(newFileOutputStream(newFile("/mnt/sdcard/backupsms.xml")),"utf-8"); // 2.3设置头信息 // standalone : 是否独立保存 xmlSerializer.startDocument("utf-8",true); // 2.4设置根标签 xmlSerializer.startTag(null,"smss"); // 1.5.解析cursor while (cursor.moveToNext()) { SystemClock.sleep(1000); // 2.5设置短信的标签 xmlSerializer.startTag(null,"sms"); // 2.6设置文本内容的标签 xmlSerializer.startTag(null,"address"); String address = cursor.getString(0); // 2.7设置文本内容 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将数据刷新到文件中 xmlSerializer.flush(); } catch (Exception e) { e.printStackTrace(); } }   }