新项目,自己整理了一些工具类,

1.首选项

public class SpUtils {/**
     * 保存在手机里面的文件名
     */
    public static final String FILE_NAME ="123";
   static Context context = BaseApplication.getmContext();

    /**
     * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
     *
     * @param key
     * @param object
     */
    public static void put(String key, Object object) {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();

        if (object instanceof String) {editor.putString(key, (String) object);
        } else if (object instanceof Integer) {editor.putInt(key, (Integer) object);
        } else if (object instanceof Boolean) {editor.putBoolean(key, (Boolean) object);
        } else if (object instanceof Float) {editor.putFloat(key, (Float) object);
        } else if (object instanceof Long) {editor.putLong(key, (Long) object);
        } else {editor.putString(key, object.toString());
        }SharedPreferencesCompat.apply(editor);
    }/**
     * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
     *
     * @param key
     * @param defaultObject
     * @return
     */
    public static Object get(String key, Object defaultObject) {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);

        if (defaultObject instanceof String) {return sp.getString(key, (String) defaultObject);
        } else if (defaultObject instanceof Integer) {return sp.getInt(key, (Integer) defaultObject);
        } else if (defaultObject instanceof Boolean) {return sp.getBoolean(key, (Boolean) defaultObject);
        } else if (defaultObject instanceof Float) {return sp.getFloat(key, (Float) defaultObject);
        } else if (defaultObject instanceof Long) {return sp.getLong(key, (Long) defaultObject);
        }return null;
    }/**
     * 移除某个key值已经对应的值
     */
    public static void remove(String key) {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.remove(key);
        SharedPreferencesCompat.apply(editor);
    }/**
     * 清除所有数据
     */
    public static void clear() {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.clear();
        SharedPreferencesCompat.apply(editor);
    }public static void setObject(String key, Object object) {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream out = null;
        try {out = new ObjectOutputStream(baos);
            out.writeObject(object);
            String objectVal = new String(Base64.encode(baos.toByteArray(), Base64.DEFAULT));
            SharedPreferences.Editor editor = sp.edit();
            editor.putString(key, objectVal);
            editor.commit();

        } catch (IOException e) {e.printStackTrace();
        } finally {try {if (baos != null) {baos.close();
                }if (out != null) {out.close();
                }} catch (IOException e) {e.printStackTrace();
            }}}@SuppressWarnings("unchecked")public static <T> T getObject(String key, Class<T> clazz) {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);

        if (sp.contains(key)) {String objectVal = sp.getString(key, null);
            byte[] buffer = Base64.decode(objectVal, Base64.DEFAULT);
            ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
            ObjectInputStream ois = null;
            try {ois = new ObjectInputStream(bais);
                T t = (T) ois.readObject();
                return t;
            } catch (StreamCorruptedException e) {e.printStackTrace();
            } catch (IOException e) {e.printStackTrace();
            } catch (ClassNotFoundException e) {e.printStackTrace();
            } finally {try {if (bais != null) {bais.close();
                    }if (ois != null) {ois.close();
                    }} catch (IOException e) {e.printStackTrace();
                }}}return null;
    }/**
     * 返回所有的键值对
     *
     * @return
     */
    public static Map<String, ?> getAll() {SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        return sp.getAll();
    }/**
     * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
     *
     * @author zhy
     */
    private static class SharedPreferencesCompat {private static final Method sApplyMethod = findApplyMethod();

        /**
         * 反射查找apply的方法
         *
         * @return
         */
        @SuppressWarnings({"unchecked", "rawtypes"})private static Method findApplyMethod() {try {Class clz = SharedPreferences.Editor.class;
                return clz.getMethod("apply");
            } catch (NoSuchMethodException e) {}return null;
        }/**
         * 如果找到则使用apply执行,否则使用commit
         *
         * @param editor
         */
        public static void apply(SharedPreferences.Editor editor) {try {if (sApplyMethod != null) {sApplyMethod.invoke(editor);
                    return;
                }} catch (IllegalArgumentException e) {} catch (IllegalAccessException e) {} catch (InvocationTargetException e) {}editor.commit();
        }}//返回String值
    public static String getString(Context context, String key, String defaultStr){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        return sp.getString(key,defaultStr);
    }

2.系统工具类

   public static final String TAG = SystemTool.class.getSimpleName();

   /**
    * 得到sdk 版本号
    * @return
    */
   public static int getSdkVersion() {return Build.VERSION.SDK_INT;
   }/**
    * 判断网络是否可用
    * @param context 上下文
    * @return
    */
   public static boolean isNetworkAvailable(Context context) {try {ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo netWorkInfo = cm.getActiveNetworkInfo();
         return (netWorkInfo != null && netWorkInfo.isAvailable());// 检测网络是否可用
      } catch (Exception e) {e.printStackTrace();
         return false;
      }}/**
    * 得到版本号
    * @param __context
    * @return
    */
   public static int getAppVersionCode(Context __context) {try {PackageManager __packageManager = __context.getPackageManager();
         PackageInfo __packInfo = __packageManager.getPackageInfo(__context.getPackageName(), 0);
         return __packInfo.versionCode;
      } catch (NameNotFoundException e) {return -1;
      }}public static String getProjectName(Context _context){PackageManager pm = _context.getPackageManager();
      String appName = _context.getApplicationInfo().loadLabel(pm).toString();
      return  appName;
   }/**
    * 得到版本名称
    * @param __context
    * @return
    */
   public static String getAppVersionName(Context __context) {try {PackageManager __packageManager = __context.getPackageManager();
         PackageInfo __packInfo = __packageManager.getPackageInfo(__context.getPackageName(), 0);
         return __packInfo.versionName;
      } catch (NameNotFoundException e) {return null;
      }}public static String getPhoneNum(Context _context) {TelephonyManager phoneMgr = (TelephonyManager) _context.getSystemService(Context.TELEPHONY_SERVICE);
      return phoneMgr.getLine1Number();
   }public static String getIMEI(Context _context) {TelephonyManager _manager = (TelephonyManager) _context.getSystemService(Context.TELEPHONY_SERVICE);
      String _imei = _manager.getDeviceId(); // 取出IMEI
      return _imei;
   }public static String getICCID(Context _context) {TelephonyManager _manager = (TelephonyManager) _context.getSystemService(Context.TELEPHONY_SERVICE);
      String _iccid = _manager.getSimSerialNumber(); // 取出ICCID
      return _iccid;
   }public static String getIMSI(Context _context) {TelephonyManager _manager = (TelephonyManager) _context.getSystemService(Context.TELEPHONY_SERVICE);
      String _imsi = _manager.getSubscriberId(); // 取出IMSI
      return _imsi;
   }public static boolean isPad(Context _context) {if (Build.VERSION.SDK_INT >= 11) {Configuration con = _context.getResources().getConfiguration();
         try {Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast", int.class);
            return (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004);
         } catch (Exception e) {e.printStackTrace();
            return false;
         }}return false;
   }public static Intent call_1(String _phoneNum) {return new Intent(Intent.ACTION_CALL_BUTTON, Uri.parse("tel:" + _phoneNum));
   }public static Intent call_2(String _phoneNum) {return new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + _phoneNum));
   }/**
    * 得到设备的唯一Id
    * @return
    */
   public static String getInstallationId() {return Build.SERIAL;
   }/**
    * 得到设备屏幕的宽度
    */
   public static int getScreenWidth(Context context) {return context.getResources().getDisplayMetrics().widthPixels;
   }/**
    * 得到设备屏幕的高度
    */
   public static int getScreenHeight(Context context) {return context.getResources().getDisplayMetrics().heightPixels;
   }/**
    * 得到设备的密度
    */
   public static float getScreenDensity(Context context) {return context.getResources().getDisplayMetrics().density;
   }/**
    * 把密度转换为像素
    */
   public static int dip2px(Context context, float px) {final float scale = getScreenDensity(context);
      return (int) (px * scale + 0.5);
   }

3.ToastUtil 工具类

public class ToastUtil {static String tag = ToastUtil.class.getSimpleName();
    //    /**
    //     * 居中Toast
    //     *
    //     * @param str
    //     */
    //    public static void centerToast(Context context, String str) {
    //        Toast toast = Toast.makeText(context, str, Toast.LENGTH_LONG);
    //        toast.setGravity(Gravity.CENTER, 0, 0);
    //        toast.show();
    //
    //    }
    static Toast mToast;

    /**
     * 顶部Toast
     * 非队列形式
     *
     * @param str
     */
    public static void topToast(Context context, String str) {if (context == null) {Log.e(tag, "topToast context == null");
            return;
        }if (str == null || str.equals("")) {Log.e(tag, "topToast str == null");
            return;
        }if (mToast == null) {mToast = Toast.makeText(context, str, Toast.LENGTH_LONG);
        } else {mToast.setText(str);
            mToast.setDuration(Toast.LENGTH_LONG);
        }int topHeight = (int) context.getResources().getDimension(R.dimen.top_hight);
        mToast.setGravity(Gravity.TOP, 0, dp2px(context, topHeight));
        mToast.show();

    }/**
     * 顶部Toast
     * 非队列形式
     *
     * @param str
     */
    public static void syncToast(Context context, String str, Handler handler, final SyncToastCallback syncToastCallback) {if (context == null) {Log.e(tag, "topToast context == null");
            return;
        }if (str == null || str.equals("")) {Log.e(tag, "topToast str == null");
            return;
        }final Toast toast = Toast.makeText(context, str, Toast.LENGTH_LONG);

        int topHeight = (int) context.getResources().getDimension(R.dimen.top_hight);
        toast.setGravity(Gravity.TOP, 0, dp2px(context, topHeight));
        toast.show();
        handler.postDelayed(new Runnable() {@Override
            public void run() {toast.cancel();
                syncToastCallback.onHide();
            }}, 2000);
    }public static void cancel() {if (mToast != null) {mToast.cancel();
        }}public interface SyncToastCallback {void onHide();

    }public static int dp2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }public int px2dp(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

4.网络类

public class NetworkUtil {public static int NET_CNNT_BAIDU_OK = 1; // NetworkAvailable
    public static int NET_CNNT_BAIDU_TIMEOUT = 2; // no NetworkAvailable
    public static int NET_NOT_PREPARE = 3; // Net no ready
    public static int NET_ERROR = 4; //net error
    private static int TIMEOUT = 3000; // TIMEOUT

    /**
     * check NetworkAvailable
     *
     * @param context
     * @return
     */
    public static boolean isNetworkAvailable(Context context) {ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        if (null == manager)return false;
        NetworkInfo info = manager.getActiveNetworkInfo();
        if (null == info || !info.isAvailable())return false;
        return true;
    }/**
     * 得到ip地址
     *
     * @return
     */
    public static String getLocalIpAddress() {String ret = "";
        try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) {ret = inetAddress.getHostAddress().toString();
                    }}}} catch (SocketException ex) {ex.printStackTrace();
        }return ret;
    }/**
     * 返回当前网络状态
     *
     * @param context
     * @return
     */
    public static int getNetState(Context context) {try {ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivity != null) {NetworkInfo networkinfo = connectivity.getActiveNetworkInfo();
                if (networkinfo != null) {if (networkinfo.isAvailable() && networkinfo.isConnected()) {if (!connectionNetwork())return NET_CNNT_BAIDU_TIMEOUT;
                        else
                            return NET_CNNT_BAIDU_OK;
                    } else {return NET_NOT_PREPARE;
                    }}}} catch (Exception e) {e.printStackTrace();
        }return NET_ERROR;
    }/**
     * ping "http://www.baidu.com"
     *
     * @return
     */
    static private boolean connectionNetwork() {boolean result = false;
        HttpURLConnection httpUrl = null;
        try {httpUrl = (HttpURLConnection) new URL("http://www.baidu.com").openConnection();
            httpUrl.setConnectTimeout(TIMEOUT);
            httpUrl.connect();
            result = true;
        } catch (IOException e) {} finally {if (null != httpUrl) {httpUrl.disconnect();
            }httpUrl = null;
        }return result;
    }/**
     * check is3G
     *
     * @param context
     * @return boolean
     */
    public static boolean is3G(Context context) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null
                && activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {return true;
        }return false;
    }/**
     * isWifi
     *
     * @param context
     * @return boolean
     */
    public static boolean isWifi(Context context) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null
                && activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {return true;
        }return false;
    }/**
     * is2G
     *
     * @param context
     * @return boolean
     */
    public static boolean is2G(Context context) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null
                && (activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_EDGE
                || activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_GPRS || activeNetInfo.getSubtype() == TelephonyManager.NETWORK_TYPE_CDMA)) {return true;
        }return false;
    }/**
     * is wifi on
     */
    public static boolean isWifiEnabled(Context context) {ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        return ((mgrConn.getActiveNetworkInfo() != null && mgrConn.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
    }} 

5.文件操作类

public final class FileUtil {//格式化的模板
    private static final String TIME_FORMAT = "_yyyyMMdd_HHmmss";

    private static final String SDCARD_DIR =Environment.getExternalStorageDirectory().getPath();

    //默认本地上传图片目录
    public static final String UPLOAD_PHOTO_DIR =Environment.getExternalStorageDirectory().getPath() + "/a_upload_photos/";

    //网页缓存地址
    public static final String WEB_CACHE_DIR =Environment.getExternalStorageDirectory().getPath() + "/app_web_cache/";

    //系统相机目录
    public static final String CAMERA_PHOTO_DIR =Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/Camera/";

    private static String getTimeFormatName(String timeFormatHeader) {final Date date = new Date(System.currentTimeMillis());
        //必须要加上单引号
        final SimpleDateFormat dateFormat = new SimpleDateFormat("'" + timeFormatHeader + "'" + TIME_FORMAT, Locale.getDefault());
        return dateFormat.format(date);
    }/**
     * @param timeFormatHeader 格式化的头(除去时间部分)
     * @param extension        后缀名
     * @return 返回时间格式化后的文件名
     */
    public static String getFileNameByTime(String timeFormatHeader, String extension) {return getTimeFormatName(timeFormatHeader) + "." + extension;
    }@SuppressWarnings("ResultOfMethodCallIgnored")private static File createDir(String sdcardDirName) {//拼接成SD卡中完整的dir
        final String dir = SDCARD_DIR + "/" + sdcardDirName + "/";
        final File fileDir = new File(dir);
        if (!fileDir.exists()) {fileDir.mkdirs();
        }return fileDir;
    }@SuppressWarnings("ResultOfMethodCallIgnored")public static File createFile(String sdcardDirName, String fileName) {return new File(createDir(sdcardDirName), fileName);
    }private static File createFileByTime(String sdcardDirName, String timeFormatHeader, String extension) {final String fileName = getFileNameByTime(timeFormatHeader, extension);
        return createFile(sdcardDirName, fileName);
    }//获取文件的MIME
    public static String getMimeType(String filePath) {final String extension = getExtension(filePath);
        return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    }//获取文件的后缀名
    public static String getExtension(String filePath) {String suffix = "";
        final File file = new File(filePath);
        final String name = file.getName();
        final int idx = name.lastIndexOf('.');
        if (idx > 0) {suffix = name.substring(idx + 1);
        }return suffix;
    }/**
     * 保存Bitmap到SD卡中
     *
     * @param dir      目录名,只需要写自己的相对目录名即可
     * @param compress 压缩比例 100是不压缩,值约小压缩率越高
     * @return 返回该文件
     */
    public static File saveBitmap(Bitmap mBitmap, String dir, int compress) {final String sdStatus = Environment.getExternalStorageState();
        // 检测sd是否可用
        if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {return null;
        }FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        File fileName = createFileByTime(dir, "DOWN_LOAD", "jpg");
        try {fos = new FileOutputStream(fileName);
            bos = new BufferedOutputStream(fos);
            mBitmap.compress(Bitmap.CompressFormat.JPEG, compress, bos);// 把数据写入文件
        } catch (FileNotFoundException e) {e.printStackTrace();
        } finally {try {if (bos != null) {bos.flush();
                }if (bos != null) {bos.close();
                }//关闭流
                if (fos != null) {fos.flush();
                }if (fos != null) {fos.close();
                }} catch (IOException e) {e.printStackTrace();
            }}refreshDCIM();

        return fileName;
    }public static File writeToDisk(InputStream is, String dir, String name) {final File file = FileUtil.createFile(dir, name);
        BufferedInputStream bis = null;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;

        try {bis = new BufferedInputStream(is);
            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos);

            byte data[] = new byte[1024 * 4];

            int count;
            while ((count = bis.read(data)) != -1) {bos.write(data, 0, count);
            }bos.flush();
            fos.flush();

        } catch (IOException e) {e.printStackTrace();
        } finally {try {if (bos != null) {bos.close();
                }if (fos != null) {fos.close();
                }if (bis != null) {bis.close();
                }is.close();
            } catch (IOException e) {e.printStackTrace();
            }}return file;
    }public static File writeToDisk(InputStream is, String dir, String prefix, String extension) {final File file = FileUtil.createFileByTime(dir, prefix, extension);
        BufferedInputStream bis = null;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;

        try {bis = new BufferedInputStream(is);
            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos);

            byte data[] = new byte[1024 * 4];

            int count;
            while ((count = bis.read(data)) != -1) {bos.write(data, 0, count);
            }bos.flush();
            fos.flush();

        } catch (IOException e) {e.printStackTrace();
        } finally {try {if (bos != null) {bos.close();
                }if (fos != null) {fos.close();
                }if (bis != null) {bis.close();
                }is.close();
            } catch (IOException e) {e.printStackTrace();
            }}return file;
    }/**
     * 通知系统刷新系统相册,使照片展现出来
     */
    private static void refreshDCIM() {if (Build.VERSION.SDK_INT >= 19) {//兼容android4.4版本,只扫描存放照片的目录
            MediaScannerConnection.scanFile(disanxue.getApplicationContext(),
                    new String[]{Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath()},
                    null, null);
        } else {//扫描整个SD卡来更新系统图库,当文件很多时用户体验不佳,且不适合4.4以上版本
            disanxue.getApplicationContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" +Environment.getExternalStorageDirectory())));
        }}/**
     * 读取raw目录中的文件,并返回为字符串
     */
    public static String getRawFile(int id) {final InputStream is = disanxue.getApplicationContext().getResources().openRawResource(id);
        final BufferedInputStream bis = new BufferedInputStream(is);
        final InputStreamReader isr = new InputStreamReader(bis);
        final BufferedReader br = new BufferedReader(isr);
        final StringBuilder stringBuilder = new StringBuilder();
        String str;
        try {while ((str = br.readLine()) != null) {stringBuilder.append(str);
            }} catch (IOException e) {e.printStackTrace();
        } finally {try {br.close();
                isr.close();
                bis.close();
                is.close();
            } catch (IOException e) {e.printStackTrace();
            }}return stringBuilder.toString();
    }public static void setIconFont(String path, TextView textView) {final Typeface typeface = Typeface.createFromAsset(disanxue.getApplicationContext().getAssets(), path);
        textView.setTypeface(typeface);
    }/**
     * 读取assets目录下的文件,并返回字符串
     */
    public static String getAssetsFile(String name) {InputStream is = null;
        BufferedInputStream bis = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        StringBuilder stringBuilder = null;
        final AssetManager assetManager = disanxue.getApplicationContext().getAssets();
        try {is = assetManager.open(name);
            bis = new BufferedInputStream(is);
            isr = new InputStreamReader(bis);
            br = new BufferedReader(isr);
            stringBuilder = new StringBuilder();
            String str;
            while ((str = br.readLine()) != null) {stringBuilder.append(str);
            }} catch (IOException e) {e.printStackTrace();
        } finally {try {if (br != null) {br.close();
                }if (isr != null) {isr.close();
                }if (bis != null) {bis.close();
                }if (is != null) {is.close();
                }assetManager.close();
            } catch (IOException e) {e.printStackTrace();
            }}if (stringBuilder != null) {return stringBuilder.toString();
        } else {return null;
        }}public static String getRealFilePath(final Context context, final Uri uri) {if (null == uri) return null;
        final String scheme = uri.getScheme();
        String data = null;
        if (scheme == null)data = uri.getPath();
        else if (ContentResolver.SCHEME_FILE.equals(scheme)) {data = uri.getPath();
        } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {final Cursor cursor = context.getContentResolver().query(uri, new String[]{MediaStore.Images.ImageColumns.DATA}, null, null, null);
            if (null != cursor) {if (cursor.moveToFirst()) {final int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                    if (index > -1) {data = cursor.getString(index);
                    }}cursor.close();
            }}return data;
    }
}

Android 各种工相关推荐

  1. android 蓝牙控制开发,Android开发工控软件--蓝牙控制

    最近一直在忙Android的工控软件设计,写一点心得,希望对这方面开发的有一点带你帮助. 1)从蓝牙接收了数据又如何保存? 之前没有想过接收的数据如何保存,就简单的用一个字节数组进行保存,后来处理数据 ...

  2. Android逆向工程之dx工具jar2dex失败,使用d8

    遇到问题 在使用apktool做apk逆向工程时,我们一般都需要将apk反编译为smail,然后将要加入其中的SDK也编译成smail,然后将二者合并起来之后打包成一个新的apk,其中将SDK的jar ...

  3. android逆向工程之apktool工具集

    Android apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片.XML配置.语言资源等文件,也可以添加新的功能到APK文件中. apk反编译软件有个组合套餐 ...

  4. Android 大杂烩工程之ListView的开发2以及数据仓库开发模式

    今天是放完假后工作的第一天,为了证明我不是一段幽灵代码,我给各位看客老爷们说句:祝大家节日过得愉快(过得不愉快那也是人之常情). 我们继续来讲一讲ListView的开发,上次讲到了ListView的适 ...

  5. xposed安装,与android逆向工程之xposed的hook

    Xposed installer安卓安装和使用 文章目录 Xposed installer安卓安装和使用 (一)Xposed installer安卓安装 0.百度网盘-我所用的apk(3.1.5)和z ...

  6. Android studio-人工智能:中国象棋

    (下载资源在文末) 项目用到PVS算法+置换表+历史表(有代码注解) (1)其中有人机对弈和双人对弈两个对弈功能 (2)帮助是给新人了解象棋的规则 (3)设置是开启/关闭背景音乐和下棋音效的 (4)进 ...

  7. Android merge优化UI

    简说 安卓在加载视图的时候,无论根节点是线性布局还是相对布局,系统都会在上一层添加一个<FrameLayout.>,也就是说任何形式的布局都会被包含在framelayout布局中 减少视图 ...

  8. c# 程序员学习android(1)引导界面--viewpager的使用

    本次之前说一下android开发工具.android开发工具有2种,一种是eclipse 一个是谷歌android-studio-bundle 前者需要配置,后者不需要.会自动下载sdk.配置方法我就 ...

  9. QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)

    一.环境介绍 QT版本: 5.12.6 编译环境: win10 64位 目标系统: Android 完整工程源码下载地址(包含APK文件):  https://download.csdn.net/do ...

最新文章

  1. 【里程碑式证明】同时解决了量子物理学和理论数学的难题!
  2. Java EE官方文档汇总
  3. hashmap的get查找过程
  4. 认证模式之Basic模式
  5. debian下运行netstat失败
  6. vue 获取元素在浏览器的位置_前端开发JS获取页面元素的位置
  7. docker版本包 乌班图_Ubuntu安装Docker方式一:软件包安装
  8. Linux 6.5选包截图
  9. 记录centos 7.9 LNMP为网站申请SSL证书详细操作
  10. excel数字点一下才变为数值的批量快捷操作
  11. libsvmpredict和svmtrain的参数和返回值
  12. 在ThinkPHP中开启调试模式
  13. 面经——oppo2022校招Linux系统工程师
  14. 把Bing改为锁屏键
  15. 基于WK2168的串口服务器设计方案
  16. 每日一问-ChapGPT-20230405-中医基础-五运六气三阴三阳
  17. Server U 的使用
  18. MNN推理引擎框架简介
  19. Duplicate Cleaner - 重复文件 / 相似文件扫描 - 构建深度学习标注数据集
  20. 6.29黄金非农周坚持做空多头反弹疲软美元指数走强金价承压

热门文章

  1. ubuntu/deepin常用软件清单(都是使用sudo apt-get install安装方式)
  2. Java GUI编程:swing JTree实现树形菜单代码示例
  3. 【原创视频】Docker总体架构设计及各模块原理剖析
  4. MySql中如果某一列中含有NULL,那么包含该列的索引就无效了?
  5. Redis sorted_set实现点赞功能
  6. Linux 用户管理命令id、su
  7. Spring Data ElasticSearch示例--查询索引库
  8. 【软考-软件设计师】数据表示
  9. Scala伴生类和伴生对象
  10. 动态折线图-Android篇