美文网首页
常见Android工具类之列表

常见Android工具类之列表

作者: 破荒之恋 | 来源:发表于2016-12-23 11:34 被阅读290次

    常见Android工具类之列表(未完待续。。。)

    • 获取应用程序的版本名和版本号
    • 获取手机联系人的信息(电话号码和名字)
    • 意图开启一个Activity的几种方式
    • 应用程序的Log的控制
    • MD5加密一个字符串得到哈希值
    • 获取手机进程的相关信息(进程的总数、内存可用,总空间)
    • 判断系统的服务是否在后台运行
    • 功能是把一个流对象转换成字符串对象
    • 一个弹吐司的工具类
    • 拷贝资产目录下的数据库到Android系统下

    获取应用程序的版本名和版本号

    public class AppInfoUtils { 
    /* *  获取版本名 */ 
    public static String getAppInfoName(Context context){  
    try {
     //获取packageManager实例 PackageManager pm=context.getPackageManager(); 
    //获取版本信息 PackageInfo packageinfo= 
    pm.getPackageInfo(context.getPackageName(), 0); 
    String versionname=packageinfo.versionName; return versionname;  
    } catch (NameNotFoundException e)
     { e.printStackTrace(); } return "";  }   
    /* * 获取版本号 */ 
    public static int getAppInfoNumber(Context context){  
    try { //获取packageManager实例 
    PackageManager pm=context.getPackageManager(); 
    //获取版本信息 PackageInfo packageinfo=
     pm.getPackageInfo(context.getPackageName(), 0); 
    int versionnumber=packageinfo.versionCode; return versionnumber;  
    } catch (NameNotFoundException e) { e.printStackTrace(); } return 0;  } }
    

    获取手机联系人的信息(电话号码和名字)

    public class ContactsInfoUtils { public static List<ContactsInfo>
     getContactsInfo(Context context){  
    List<ContactsInfo> infocontacts=new ArrayList<ContactsInfo>(); 
    //获取内容提供者的解析器 
    ContentResolver resolver=context.getContentResolver(); 
    Uri uri=Uri.parse("content://com.android.contacts/raw_contacts"); 
    Uri dataUri=Uri.parse("content://com.android.contacts/data");
     //游标 
    Cursor cursor=resolver.query(uri, new String[]{"contact_id"}, null, null, null); 
    //遍历游标集合 while(cursor.moveToNext()){ 
    String id=cursor.getString(cursor.getColumnIndex("contact_id")); 
    System.out.println("id"+id);  
    if(id!=null){ 
    ContactsInfo infos=new ContactsInfoUtils().new ContactsInfo(); 
    Cursor datacursor=resolver.query(dataUri, new String[]{"data1","mimetype"}, "raw_contact_id=?", new String[]{id}, null); 
    while(datacursor.moveToNext()){ 
    String data1=datacursor.getString(0); 
    String mimetype=datacursor.getString(1); 
    if("vnd.android.cursor.item/name".equals(mimetype)){ 
    //姓名
     infos.setName(data1);
     }else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
     //电话
     infos.setPhone(data1);
     }else if("vnd.android.cursor.item/email_v2".equals(mimetype)){
     //电话
     infos.setEmail(data1); }  
    } infocontacts.add(infos); 
    } 
    return infocontacts; }
     return infocontacts;    
    } 
    public static List<ContactsInfo> getROMContacts(Context context){ 
    //联系人信息集合 List<ContactsInfo> contactList = new ArrayList<ContactsInfo>(); 
     // 获取手机通讯录信息  
    ContentResolver resolver = context.getContentResolver();  
    /** 所有的联系人信息 */  
    Cursor personCur = resolver.query(ContactsContract.Contacts.CONTENT_URI, null,  null, null, null); 
     // 循环遍历,获取每个联系人的姓名和电话号码 
     while (personCur.moveToNext()) {  
    // 新建联系人对象  
    ContactsInfo cInfor =new ContactsInfoUtils().new ContactsInfo();  
    // 联系人姓名 
     String cname = "";  
    // 联系人电话  
    String cnum = ""; 
     // 联系人id号码  
    String ID; 
     ID = personCur.getString(personCur  .getColumnIndex(ContactsContract.Contacts._ID));  
    // 联系人姓名  
    cname = personCur.getString(personCur .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));  
    // id的整型数据  
    int id = Integer.parseInt(ID); if (id > 0) {  
    // 获取指定id号码的电话号码  
    Cursor c = resolver.query(  ContactsContract.CommonDataKinds.Phone.CONTENT_URI,  null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID  + "=" + ID, null, null);  
    // 遍历游标  
    while (c.moveToNext()) {  cnum = c.getString(c  .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  } 
     // 将对象加入到集合中  
    cInfor.setName(cname);  
    cInfor.setPhone(cnum);  
    contactList.add(cInfor);   
    } } return contactList; }   
    public class ContactsInfo{
     public String name; 
    public String email; 
    public String getName() { 
    return name; } 
    public void setName(String name) {
     this.name = name; }
     public String getEmail() { 
    return email; }
     public void setEmail(String email) { 
    this.email = email; } 
    public String getPhone() { 
    return phone; } 
    public void setPhone(String phone) { 
    this.phone = phone; } 
    public String phone; } } 
    

    意图开启一个Activity的几种方式

    public class IntentUtils {  
    /** * 进入一个界面 */ 
    public static void startActivityInfo(Activity context,Class<?>cls){
     Intent intent=new Intent(context,cls); 
    context.startActivity(intent); } 
     /** * 进入一个界面并结束自己 */ 
    public static void startActivityAndFinish(Activity context,Class<?>cls){
     Intent intent=new Intent(context,cls); 
    context.startActivity(intent); context.finish(); } 
    /** * 延迟进入进入一个界面 *  */ 
    public static void startActivityDelay(final Activity context,final Class<?>cls,final long time){  
    new Thread(){ 
    @Override 
    public void run() {
     try { Thread.sleep(time); }
     catch (InterruptedException e) 
    { e.printStackTrace(); } 
    Intent intent=new Intent(context,cls);
     context.startActivity(intent); } }.start(); }  
    /** * 延迟进入进入另一个界面并销毁这个界面 *  */ 
    public static void startActivityDelayAndFinish(final Activity context,final Class<?>cls,final long time){  
    new Thread(){ 
    @Override 
    public void run() { 
    try { Thread.sleep(time);
     } catch (InterruptedException e) { 
    e.printStackTrace(); } 
    Intent intent=new Intent(context,cls); 
    context.startActivity(intent); 
    context.finish(); } }.start(); } }
    

    应用程序的Log的控制

    public class Logger {  
    private static final int VERBOSE=1; 
    private static final int DEBUG=2; 
    private static final int INFO=3; 
    private static final int WARN=4; 
    private static final int ERROR=5; 
    private static int LOGLEVEL=4;  
    public static void v(String tag,String msg){ 
    if(VERBOSE>LOGLEVEL){ Log.v(tag, msg); } } 
    public static void d(String tag,String msg){ 
    if(DEBUG>LOGLEVEL){
     Log.d(tag, msg); } }
     public static void i(String tag,String msg){ 
    if(INFO>LOGLEVEL){ 
    Log.i(tag, msg); } } 
    public static void w(String tag,String msg){
     if(WARN>LOGLEVEL){ 
    Log.w(tag, msg); } } 
    public static void e(String tag,String msg){ 
    if(ERROR>LOGLEVEL){ 
    Log.e(tag, msg); } } }
    

    MD5加密一个字符串得到哈希值

    public class MD5Utils { 
    /** * 采用md5加密算法,不可逆 * @param text * @return */ 
    public static String encode(String text){  try { 
    MessageDigest digest=MessageDigest.getInstance("md5");  
    byte[] result=digest.digest(text.getBytes()); 
    StringBuffer sb=new StringBuffer(); 
    for(byte b:result){ 
    String hex=Integer.toHexString(b&0xff)+2; 
    if(hex.length()==1){ 
    sb.append("0"); } 
    sb.append(hex); } 
    return sb.toString();
     } catch (NoSuchAlgorithmException e) {
     e.printStackTrace();
    return ""; } } 
    }
    

    获取手机进程的相关信息(进程的总数、内存可用,总空间)

    public class ProcessInfoUtils { 
    /** * 获取系统进程的总数 * @return */ 
    public static int getRunningProcessCount(Context context){ 
    /* * 获取进程管理器 */ 
    ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
     //返回正在运行进程的集合 
    List<RunningAppProcessInfo>infos= am.getRunningAppProcesses(); 
    return infos.size();  } 
    /** * 获取系统进程内存的可用空间 * @return * @param context 上下文,获得可用内存 */ 
    public static long getAvialRam(Context context){ 
    /* * 获取进程管理器 */ 
    ActivityManager am=(ActivityManager) 
    context.getSystemService(Context.ACTIVITY_SERVICE); 
    MemoryInfo outInfo=new MemoryInfo(); 
    am.getMemoryInfo(outInfo); 
    return outInfo.availMem;  } /** * 获取系统进程内存的总空间 * @return * @param context 上下文,获得总空间 */ 
    public static long getTotalRam(Context context){
     /* * 获取进程管理器 */ /*
    ActivityManager am=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    MemoryInfo outInfo=new MemoryInfo(); 
    am.getMemoryInfo(outInfo);*/   
    try { File file=new File("/proc/meminfo"); 
    FileInputStream fis=new FileInputStream(file); 
    BufferedReader br=new BufferedReader(new InputStreamReader(fis)); String line=br.readLine(); 
    StringBuffer sb=new StringBuffer(); 
    for(char c :line.toCharArray()){ if(c>='0' && c<='9'){ 
    sb.append(c); } }
     //返回的是字节 
    return Long.parseLong(sb.toString())*1024; } 
    catch (Exception e) { e.printStackTrace(); 
     return 0; } } }
    

    判断系统的服务是否在后台运行

    public class ServicerUtils {
     /** * 判断系统的服务是否在后台运行 */
     public static boolean isServiceRunning(Context context,String StringName){ //获取进程和服务的管理器 
    ActivityManager am=(ActivityManager) 
    context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningServiceInfo> infos=am.getRunningServices(1000);
     for(ActivityManager.RunningServiceInfo info:infos){ 
    String className=info.service.getClassName(); //System.out.println(className);
     if(StringName.equals(className)){ return true; } } 
    return false; } }
    

    功能是把一个流对象转换成字符串对象解析成功则返回值为字符串,不成功则为null

    public class StreamUtils { 
    public static String readStream(InputStream is){  
    try { ByteArrayOutputStream baos=new ByteArrayOutputStream(); 
    byte []buffer=new byte[1024]; 
    int len=0; 
    while((len=is.read(buffer))!=-1){ 
    baos.write(buffer, 0, len);  }
     is.close();
     return baos.toString(); } 
    catch (IOException e) { 
    e.printStackTrace();
     return null; }  }   }
    

    一个任意线程弹吐司的工具类

    public class ToastUtils {  
    /* *可以在任意线程(包括主线程和子线程)中更新Ui  * @param activity 上下文 * @param text 文本 *  */ 
    public static void show(final Activity activity,final String text){ 
    if("main".equals(Thread.currentThread().getName())){ 
    Toast.makeText(activity, text, 0).show(); }
    else{ activity.runOnUiThread(new Runnable(){ 
    public void run() { 
    Toast.makeText(activity, text, 0).show(); }; });  
    } }
      /**  * 可以在任意线程(包括主线程和子线程)中更新UI *  * @param activity 上下文 * @param text 文本 * @param len 时长 */ 
    public static void show(final Activity activity,final String text,final int len){
     if("main".equals(Thread.currentThread().getName())){ 
    Toast.makeText(activity, text, len).show(); 
    }else{ activity.runOnUiThread(new Runnable(){ 
    public void run() { 
    Toast.makeText(activity, text, len).show(); }; }); 
     } } }
    

    拷贝资产目录下的数据库到Android系统下

     private void copyDB(final String name) { /* * 数据库多时可能耗时 */ new Thread(){ 
    public void run() {
     File file=new File(getFilesDir(),name); 
    if(file.exists()&&file.length()>0){ 
    System.out.println("数据库已经加载过,无需在加载!"); 
    }else{  try { 
    InputStream is=getAssets().open(name); 
    FileOutputStream fos=new FileOutputStream(file);
     byte[] buffer=new byte[1024]; 
    int len=-1; 
    while((len=is.read(buffer))!=-1){ 
    fos.write(buffer, 0, len); }
    is.close(); fos.close();  }
    catch (Exception e) { 
    e.printStackTrace(); } } }; }.start(); }
    

    相关文章

      网友评论

          本文标题:常见Android工具类之列表

          本文链接:https://www.haomeiwen.com/subject/chrkvttx.html