1.收集设备信息,用于信息统计分析

public static Properties collectDeviceInfo(Context context) {        Properties mDeviceCrashInfo = new Properties();        try {            PackageManager pm = context.getPackageManager();            PackageInfo pi = pm.getPackageInfo(context.getPackageName(),                    PackageManager.GET_ACTIVITIES);            if (pi != null) {                mDeviceCrashInfo.put(VERSION_NAME,                        pi.versionName == null ? "not set" : pi.versionName);                mDeviceCrashInfo.put(VERSION_CODE, pi.versionCode);            }        } catch (PackageManager.NameNotFoundException e) {            Log.e(TAG, "Error while collect package info", e);        }        Field[] fields = Build.class.getDeclaredFields();        for (Field field : fields) {            try {                field.setAccessible(true);                mDeviceCrashInfo.put(field.getName(), field.get(null));            } catch (Exception e) {                Log.e(TAG, "Error while collect crash info", e);            }        }        return mDeviceCrashInfo;    }public static String collectDeviceInfoStr(Context context) {        Properties prop = collectDeviceInfo(context);        Set deviceInfos = prop.keySet();        StringBuilder deviceInfoStr = new StringBuilder("{\n");        for (Iterator iter = deviceInfos.iterator(); iter.hasNext();) {            Object item = iter.next();            deviceInfoStr.append("\t\t\t" + item + ":" + prop.get(item)                    + ", \n");        }        deviceInfoStr.append("}");        return deviceInfoStr.toString();    }

2.是否有SD卡

public static boolean haveSDCard() {        return android.os.Environment.getExternalStorageState().equals(                android.os.Environment.MEDIA_MOUNTED);    }

3.动态隐藏软键盘

@TargetApi(Build.VERSION_CODES.CUPCAKE)    public static void hideSoftInput(Activity activity) {        View view = activity.getWindow().peekDecorView();        if (view != null) {            InputMethodManager inputmanger = (InputMethodManager) activity                    .getSystemService(Context.INPUT_METHOD_SERVICE);            inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);        }    }    @TargetApi(Build.VERSION_CODES.CUPCAKE)public static void hideSoftInput(Context context, EditText edit) {        edit.clearFocus();        InputMethodManager inputmanger = (InputMethodManager) context                .getSystemService(Context.INPUT_METHOD_SERVICE);        inputmanger.hideSoftInputFromWindow(edit.getWindowToken(), 0);    }

4.动态显示软键盘

@TargetApi(Build.VERSION_CODES.CUPCAKE)public static void showSoftInput(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);    }

5.动态显示或者是隐藏软键盘

TargetApi(Build.VERSION_CODES.CUPCAKE)public static void toggleSoftInput(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);    }

6.主动回到Home,后台运行

public static void goHome(Context context) {        Intent mHomeIntent = new Intent(Intent.ACTION_MAIN);        mHomeIntent.addCategory(Intent.CATEGORY_HOME);        mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);        context.startActivity(mHomeIntent);    }

7.获取状态栏高度
注意,要在onWindowFocusChanged中调用,在onCreate中获取高度为0

@TargetApi(Build.VERSION_CODES.CUPCAKE)public static int getStatusBarHeight(Activity activity) {    Rect frame = new Rect();    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);        return frame.top;    }

8.获取状态栏高度+标题栏(ActionBar)高度
仅当用户已在网络注册时有效, CDMA 可能会无效(中国移动:46000 46002, 中国联通:46001,中国电信:46003)

public static String getNetworkOperator(Context context) {        TelephonyManager telephonyManager = (TelephonyManager) context                .getSystemService(Context.TELEPHONY_SERVICE);        return telephonyManager.getNetworkOperator();    }

10.返回移动网络运营商的名字
(例:中国联通、中国移动、中国电信) 仅当用户已在网络注册时有效, CDMA 可能会无效)

public static String getNetworkOperatorName(Context context) {        TelephonyManager telephonyManager = (TelephonyManager) context                .getSystemService(Context.TELEPHONY_SERVICE);        return telephonyManager.getNetworkOperatorName();    }

11.返回移动终端类型
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 telephonyManager = (TelephonyManager) context                .getSystemService(Context.TELEPHONY_SERVICE);        return telephonyManager.getPhoneType();    }

12.判断手机连接的网络类型(2G,3G,4G)

联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO

public class Constants {    /**     * Unknown network class     */    public static final int NETWORK_CLASS_UNKNOWN = 0;    /**     * wifi net work     */    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;}public static int getNetWorkClass(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;        }    }

13.判断当前手机的网络类型(WIFI还是2,3,4G)

需要用到上面的方法:

public static int getNetWorkStatus(Context context) {        int netWorkType = Constants.NETWORK_CLASS_UNKNOWN;        ConnectivityManager connectivityManager = (ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo networkInfo = connectivityManager.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 = getNetWorkClass(context);            }        }        return netWorkType;    }

14.模仿小米沉浸试标题栏

public class ZoneShowActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_zone_show);  //透明状态栏        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);   //透明导航栏   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  

更多相关文章

  1. Android 手机端与服务端POST数据交互类
  2. Android手机开发:Menu功能
  3. android通过servlet服务器保存文件到手机
  4. Android 代码获取手机ip地址(个人笔记)
  5. Android 获取手机SIM卡运营商
  6. 解决小米手机无法收到开机广播的问题
  7. android手机端与PC端使用adb forword通信
  8. Android手机游戏摇杆

随机推荐

  1. Android(安卓)调用js,传对象到js里面使用a
  2. Android屏幕直播方案
  3. Android(安卓)连接WIF获取的信息剖析
  4. Android.mk语法说明(android ndk开发)
  5. 源码解析Android中的事件处理
  6. Android登录记住密码,AES加密保存密码
  7. 如何在Windows上设置Android环境变量/路
  8. Android(安卓)Scroll详解(二):OverScrolle
  9. 我的Android进阶之旅------>Android中解
  10. Android,似乎没那么友好.....