Android简单实用方法收集

收集一些实用方法 ,最终整理出几个util类,方便以后项目使用,持续更新。

     **
     * 获得屏幕宽度与高度
     */
    public void getScreenSize() {

        if (Build.VERSION.SDK_INT > 13) {
            Point p = new Point();
            ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getSize(p);
            screenWidth = p.x;
            screenHeight = p.y;
        } else {
            screenWidth = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();
            screenHeight = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();
        }

        Log.v("ScreenWidth", ""+screenWidth);
        Log.v("ScreenHeight", ""+screenHeight);
    }
     /**
     * 获得状态栏高度
     */
    public void getStatusHeight() {

        try {
            Class<?> clazz = Class.forName("com.android.internal.R$dimen");
            Object object = clazz.newInstance();
            int height = Integer.parseInt(clazz.getField("status_bar_height")
                    .get(object).toString());
            statusHeight = getApplicationContext().getResources().getDimensionPixelSize(height);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Log.v("statusHeight", ""+statusHeight);
    }
/**
     * Save an app icon to cache folder
     * @param context Context
     * @param appInfo App to save icon
     * @return true if the icon has been saved, false otherwise
     */
    public static Boolean saveIconToCache(Context context, AppInfo appInfo) {
        Boolean res = false;

        try {
            //apkInfo.getApk(),实体类AppInfo的get方法,获取apk的包名
            ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo(appInfo.getAPK(), 0);
            File fileUri = new File(context.getCacheDir(), appInfo.getAPK());
            FileOutputStream out = new FileOutputStream(fileUri);
            Drawable icon = context.getPackageManager().getApplicationIcon(applicationInfo);
            BitmapDrawable iconBitmap = (BitmapDrawable) icon;
            iconBitmap.getBitmap().compress(Bitmap.CompressFormat.PNG, 100, out);
            res = true;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        return res;
    }

手机网络相关 

    /**
     * 判断网络是否可用
     */
   public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            return false;
        } else {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++) {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    public static boolean checkNetState(Context context) {
        boolean netstate = false;
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null)
        {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null) {
                for (int i = 0; i < info.length; i++)
                {
                    if (info[i].getState() == NetworkInfo.State.CONNECTED)
                    {
                        netstate = true;
                        break;
                    }
                }
            }
        }
        return netstate;
    }

    /**
     * 判断网络是否为漫游
     */
    public static boolean isNetworkRoaming(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) {
            Log.w(LOG_TAG, "couldn't get connectivity manager");
        } else {
            NetworkInfo info = connectivity.getActiveNetworkInfo();
            if (info != null
                    && info.getType() == ConnectivityManager.TYPE_MOBILE) {
                TelephonyManager tm = (TelephonyManager) context
                        .getSystemService(Context.TELEPHONY_SERVICE);
                if (tm != null && tm.isNetworkRoaming()) {
                    Log.d(LOG_TAG, "network is roaming");
                    return true;
                } else {
                    Log.d(LOG_TAG, "network is not roaming");
                }
            } else {
                Log.d(LOG_TAG, "not using mobile network");
            }
        }
        return false;
    }

    /**
     * 判断MOBILE网络是否可用
     * 
     * @param context
     * @return
     * @throws Exception
     */
    public static boolean isMobileDataEnable(Context context) throws Exception {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        boolean isMobileDataEnable = false;

        isMobileDataEnable = connectivityManager.getNetworkInfo(
                ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

        return isMobileDataEnable;
    }

    /**
     * 判断wifi 是否可用
     * 
     * @param context
     * @return
     * @throws Exception
     */
    public static boolean isWifiDataEnable(Context context) throws Exception {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        boolean isWifiDataEnable = false;
        isWifiDataEnable = connectivityManager.getNetworkInfo(
                ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
        return isWifiDataEnable;
    }

获取本机已安装应用列表

/**
 * 获取已安装apk的列表
 */
private static List<AppInfo> getAppInfos() {
 
    ArrayList<AppInfo> appInfos = new ArrayList<AppInfo>();
    //获取到包的管理者
    PackageManager packageManager = mContext.getPackageManager();
    //获得所有的安装包
    List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
 
    //遍历每个安装包,获取对应的信息
    for (PackageInfo packageInfo : installedPackages) {
 
        AppInfo appInfo = new AppInfo();
 
        appInfo.setApplicationInfo(packageInfo.applicationInfo);
        appInfo.setVersionCode(packageInfo.versionCode);
 
        //得到icon
        Drawable drawable = packageInfo.applicationInfo.loadIcon(packageManager);
        appInfo.setIcon(drawable);
 
        //得到程序的名字
        String apkName = packageInfo.applicationInfo.loadLabel(packageManager).toString();
        appInfo.setApkName(apkName);
 
        //得到程序的包名
        String packageName = packageInfo.packageName;
        appInfo.setApkPackageName(packageName);
 
        //得到程序的资源文件夹
        String sourceDir = packageInfo.applicationInfo.sourceDir;
        File file = new File(sourceDir);
        //得到apk的大小
        long size = file.length();
        appInfo.setApkSize(size);
 
        System.out.println("---------------------------");
        System.out.println("程序的名字:" + apkName);
        System.out.println("程序的包名:" + packageName);
        System.out.println("程序的大小:" + size);
 
 
        //获取到安装应用程序的标记
        int flags = packageInfo.applicationInfo.flags;
 
        if ((flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
            //表示系统app
            appInfo.setIsUserApp(false);
        } else {
            //表示用户app
            appInfo.setIsUserApp(true);
        }
 
        if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
            //表示在sd卡
            appInfo.setIsRom(false);
        } else {
            //表示内存
            appInfo.setIsRom(true);
        }
 
        appInfos.add(appInfo);
    }
    return appInfos;
}

猜你喜欢

转载自blog.csdn.net/xia236326/article/details/79014102
今日推荐