微信号:jszj2014215

介绍:主要分享移动互联网的相关产品和资讯,关注你将学习到更多,在互联网的当下你会赚更多的钱...

(二)Android开发人员不得不收集的代码

2016-09-14 10:25 Android技术之家

获取手机短信并保存到xml中

/** * 获取手机短信并保存到xml中 * 需添加权限<uses-permission android:name="android.permission.READ_SMS"/> * 需添加权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> */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(new FileOutputStream(new File("/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) {        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

网络相关

打开网络设置界面

/** * 打开网络设置界面 * 3.0以下打开设置界面 */public static void openWirelessSettings(Context context) {    if (android.os.Build.VERSION.SDK_INT > 10) {
        context.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
    } else {
        context.startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
    }
}

判断是否网络连接

/** * 判断是否网络连接 * 需添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> */public static boolean isConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Activity.CONNECTIVITY_SERVICE);
    NetworkInfo info = cm.getActiveNetworkInfo();    return info != null && info.isConnected();
}

判断wifi是否连接状态

/** * 判断wifi是否连接状态 * 需添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> */public static boolean isWifiConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);    return cm != null && cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
}

获取移动网络运营商名称

/** * 获取移动网络运营商名称 * 如中国联通、中国移动、中国电信 */public static String getNetworkOperatorName(Context context) {
    TelephonyManager tm = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);    return tm != null ? tm.getNetworkOperatorName() : null;

获取移动终端类型

/** * 获取移动终端类型 * PHONE_TYPE_NONE  : 0 手机制式未知 * PHONE_TYPE_GSM   : 1 手机制式为GSM,移动和联通 * PHONE_TYPE_CDMA  : 2 手机制式为CDMA,电信 * PHONE_TYPE_SIP   : 3 */public static int getPhoneType(Context context) {
    TelephonyManager tm = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);    return tm != null ? tm.getPhoneType() : -1;
}

获取连接的网络类型(2G,3G,4G)

/** * 获取连接的网络类型(2G,3G,4G) * 联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO */public static int getNetTpye(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);    switch (telephonyManager.getNetworkType()) {        case TelephonyManager.NETWORK_TYPE_GPRS:        case TelephonyManager.NETWORK_TYPE_EDGE:        case TelephonyManager.NETWORK_TYPE_CDMA:        case TelephonyManager.NETWORK_TYPE_1xRTT:        case TelephonyManager.NETWORK_TYPE_IDEN:            return Constants.NETWORK_CLASS_2_G;        case TelephonyManager.NETWORK_TYPE_UMTS:        case TelephonyManager.NETWORK_TYPE_EVDO_0:        case TelephonyManager.NETWORK_TYPE_EVDO_A:        case TelephonyManager.NETWORK_TYPE_HSDPA:        case TelephonyManager.NETWORK_TYPE_HSUPA:        case TelephonyManager.NETWORK_TYPE_HSPA:        case TelephonyManager.NETWORK_TYPE_EVDO_B:        case TelephonyManager.NETWORK_TYPE_EHRPD:        case TelephonyManager.NETWORK_TYPE_HSPAP:            return Constants.NETWORK_CLASS_3_G;        case TelephonyManager.NETWORK_TYPE_LTE:            return Constants.NETWORK_CLASS_4_G;        default:            return Constants.NETWORK_CLASS_UNKNOWN;
    }
}public class Constants {    // Unknown network class
    public static final int NETWORK_CLASS_UNKNOWN = 0;    // wifi network
    public static final int NETWORK_WIFI = 1;    // "2G" networks
    public static final int NETWORK_CLASS_2_G = 2;    // "3G" networks
    public static final int NETWORK_CLASS_3_G = 3;    // "4G" networks
    public static final int NETWORK_CLASS_4_G = 4;
}

获取当前手机的网络类型(WIFI,2G,3G,4G)

/** * 获取当前手机的网络类型(WIFI,2G,3G,4G) * 需添加权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> * 需要用到上面的方法 */public static int getCurNetworkType(Context context) {    int netWorkType = Constants.NETWORK_CLASS_UNKNOWN;
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = cm.getActiveNetworkInfo();    if (networkInfo != null && networkInfo.isConnected()) {        int type = networkInfo.getType();        if (type == ConnectivityManager.TYPE_WIFI) {
            netWorkType = Constants.NETWORK_WIFI;
        } else if (type == ConnectivityManager.TYPE_MOBILE) {
            netWorkType = getNetworkTpye(context);
        }
    }    return netWorkType;
}

App相关

安装指定路径下的Apk

/** * 安装指定路径下的Apk */public void installApk(String filePath) {
    Intent intent = new Intent();
    intent.setAction("android.intent.action.VIEW");
    intent.addCategory("android.intent.category.DEFAULT");
    intent.setDataAndType(Uri.fromFile(new File(filePath)), "application/vnd.android.package-archive");
    startActivityForResult(intent, 0);
}

卸载指定包名的App

/** * 卸载指定包名的App */public void uninstallApp(String packageName) {
    Intent intent = new Intent();
    intent.setAction("android.intent.action.DELETE");
    intent.addCategory("android.intent.category.DEFAULT");
    intent.setData(Uri.parse("package:" + packageName));
    startActivityForResult(intent, 0);
}

获取App名称

/** * 获取App名称 */public static String getAppName(Context context) {    try {
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packageInfo = packageManager.getPackageInfo(
                context.getPackageName(), 0);        int labelRes = packageInfo.applicationInfo.labelRes;        return context.getResources().getString(labelRes);
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }    return null;
}

获取当前App版本号

/** * 获取当前App版本号 */public static String getVersionName(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;
    }    return versionName;
}

获取当前App版本Code

/** * 获取当前App版本Code */public static int getVersionCode(Context context) {    int versionCode = 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;
    }    return versionCode;
}

打开指定包名的App

/** * 打开指定包名的App */public void openOtherApp(String packageName){
    PackageManager manager = getPackageManager();
    Intent launchIntentForPackage = manager.getLaunchIntentForPackage(packageName);    if (launchIntentForPackage != null) {
        startActivity(launchIntentForPackage);
    }
}

打开指定包名的App应用信息界面

/** * 打开指定包名的App应用信息界面 */public void showAppInfo(String packageName) {
    Intent intent = new Intent();
    intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
    intent.setData(Uri.parse("package:" + packageName));
    startActivity(intent);
}

分享Apk信息

/** * 分享Apk信息 */public void shareApkInfo(String info) {
    Intent intent = new Intent();
    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信息的一个封装类(包名、版本号、应用信息、图标、名称等)

/** * 获取App信息的一个封装类(包名、版本号、应用信息、图标、名称等) */public class AppEnging {    public static List<AppInfo> getAppInfos(Context context) {
        List<AppInfo> list = new ArrayList<AppInfo>();        //获取应用程序信息
        //包的管理者
        PackageManager pm = context.getPackageManager();        //获取系统中安装到所有软件信息
        List<PackageInfo> installedPackages = pm.getInstalledPackages(0);        for (PackageInfo packageInfo : installedPackages) {            //获取包名
            String packageName = packageInfo.packageName;            //获取版本号
            String versionName = packageInfo.versionName;            //获取application
            ApplicationInfo applicationInfo = packageInfo.applicationInfo;            int uid = applicationInfo.uid;            //获取应用程序的图标
            Drawable icon = applicationInfo.loadIcon(pm);            //获取应用程序的名称
            String name = applicationInfo.loadLabel(pm).toString();            //是否是用户程序
            //获取应用程序中相关信息,是否是系统程序和是否安装到SD卡
            boolean isUser;            int flags = applicationInfo.flags;            if ((applicationInfo.FLAG_SYSTEM & flags) == applicationInfo.FLAG_SYSTEM) {                //系统程序
                isUser = false;
            } else {                //用户程序
                isUser = true;
            }            //是否安装到SD卡
            boolean isSD;            if ((applicationInfo.FLAG_EXTERNAL_STORAGE & flags) == applicationInfo.FLAG_EXTERNAL_STORAGE) {                //安装到了SD卡
                isSD = true;
            } else {                //安装到手机中
                isSD = false;
            }            //添加到bean中
            AppInfo appInfo = new AppInfo(name, icon, packageName, versionName, isSD, isUser);            //将bean存放到list集合
            list.add(appInfo);
        }        return list;
    }
}// 封装软件信息的bean类class AppInfo {    //名称
    private String name;    //图标
    private Drawable icon;    //包名
    private String packagName;    //版本号
    private String versionName;    //是否安装到SD卡
    private boolean isSD;    //是否是用户程序
    private boolean isUser;    public AppInfo() {        super();
    }    public AppInfo(String name, Drawable icon, String packagName,                   String versionName, boolean isSD, boolean isUser) {        super();        this.name = name;        this.icon = icon;        this.packagName = packagName;        this.versionName = versionName;        this.isSD = isSD;        this.isUser = isUser;
    }
}

判断当前App处于前台还是后台

// 需添加<uses-permission android:name="android.permission.GET_TASKS"/>// 并且必须是系统应用该方法才有效/** * 判断当前App处于前台还是后台 */public static boolean isApplicationBackground(final Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);    @SuppressWarnings("deprecation")
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;        if (!topActivity.getPackageName().equals(context.getPackageName())) {            return true;
        }
    }    return false;
}

屏幕相关

获取手机分辨率

/** * 获取屏幕的宽度px */public static int getDeviceWidth(Context context) {
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics outMetrics = new DisplayMetrics();// 创建了一张白纸
    windowManager.getDefaultDisplay().getMetrics(outMetrics);// 给白纸设置宽高
    return outMetrics.widthPixels;
}/** * 获取屏幕的高度px */public static int getDeviceHeight(Context context) {
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics outMetrics = new DisplayMetrics();// 创建了一张白纸
    windowManager.getDefaultDisplay().getMetrics(outMetrics);// 给白纸设置宽高
    return outMetrics.heightPixels;
}

获取状态栏高度

/** * 获取状态栏高度 */public int getStatusBarHeight() {    int result = 0;    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }    return result;
}

获取状态栏高度+标题栏(ActionBar)高度

/** * 获取状态栏高度+标题栏(ActionBar)高度 */public static int getTopBarHeight(Activity activity) {    return activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
}


 
Android技术之家 更多文章 Android开发人员不得不收集的代码 Gradle打包APK的一些小技巧和productFlavor配置 AndroidStudio之如何使用aar Android自定义控件常用方法总结 软件架构入门,看这篇就够了···
猜您喜欢 tomcat对JDK线程池的扩展 iOS APP可执行文件的组成 Scoops android app多主题架构(一) Android 终于官方支持按百分比来设置控件的宽高了 谷歌I/O大会有啥亮点值得期待?