android开发 系统信息相关工具类 权限管理页面

package com.example.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.example.activity.MainActivity;

import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.util.Log;
import android.widget.Toast;

public class SystemUtils {
 /**
  * Android开发中程序判断手机操作系统版本。
  * @return
  */
 public static int getAndroidSDKVersion() {
  int version = 0;
  try {
   version = Integer.valueOf(android.os.Build.VERSION.SDK);
  } catch (NumberFormatException e) {
   Log.e(e.toString(), null);

  }
  return version;
 }
 /**
  * 获取手机型号
  * @return
  */
 public static String getPhoneMdel(){
  String s=android.os.Build.MODEL;
  return s;

 }
 /**
  * 获取手机厂商
  * @return
  */
 public static String getPhoneManufacturer(){
  String phoneManufacturer=android.os.Build.MANUFACTURER;
  return phoneManufacturer;
 }
 /**
  * 获取系统版本号
  * @return
  */
 public static String getSystemVersion(){
  String systemVersion=android.os.Build.VERSION.RELEASE;
  return systemVersion;
 }
 /**
  * 获取当前软件版本号
  * @param context
  * @return
  */
 public static String getAppVersionName(Context context) {
  String versionName = "";
  try {
   PackageManager packageManager = context.getPackageManager();
   PackageInfo packageInfo = packageManager.getPackageInfo("cn.testgethandsetinfo", 0);
   versionName = packageInfo.versionName;
   if (TextUtils.isEmpty(versionName)) {
    return "";
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return versionName;
 }
 /**
  * 获取手机号码
  * @param context
  * @return
  */
 public static String getPhoneNumber(Context context){
  TelephonyManager phoneMgr=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
  String phoneNumber=phoneMgr.getLine1Number();
  if(TextUtils.isEmpty(phoneNumber)){
   return "手机号码获取不到,运营商未保存在卡中";
  }
  return phoneNumber;

 }
 /**
  * 获取手机mac地址
  * @param context
  * @return
  */
 public static String getMacAddress(Context context){   

  String result = "";   

  WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);   

  WifiInfo wifiInfo = wifiManager.getConnectionInfo();   

  result = wifiInfo.getMacAddress();   

  Log.d("Utils", "macAdd:" + result);   

  return result;   

 } 
 /**
  * 获取手机CPU信息
  * @return
  */
 public static String[] getCpuInfo() { 
  String str1 = "/proc/cpuinfo"; 
  String str2=""; 
  String[] cpuInfo={"",""}; 
  String[] arrayOfString; 
  try { 
   FileReader fr = new FileReader(str1); 
   BufferedReader localBufferedReader = new BufferedReader(fr, 8192); 
   str2 = localBufferedReader.readLine(); 
   arrayOfString = str2.split("\\s+"); 
   for (int i = 2; i < arrayOfString.length; i++) { 
    cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " "; 
   } 
   str2 = localBufferedReader.readLine(); 
   arrayOfString = str2.split("\\s+"); 
   cpuInfo[1] += arrayOfString[2]; 
   localBufferedReader.close(); 
  } catch (IOException e) { 
  } 
  return cpuInfo; 
 } 

 /**
  * 手机可用内存大小
  * @param context
  * @return
  */
 public static String getTotalMemory(Context context) {   
  ActivityManager mActivityManager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
  MemoryInfo memoryInfo=new MemoryInfo();
  mActivityManager.getMemoryInfo(memoryInfo);
  Long memorySize=memoryInfo.availMem;
  String phoneMemory=Formatter.formatFileSize(context, memorySize);
  return phoneMemory;   

 }
 /**
  * 获取SDK大小
  * @return
  */
 public static long[] getSDCardMemory() { 
  long[] sdCardInfo=new long[2]; 
  String state = Environment.getExternalStorageState(); 
  if (Environment.MEDIA_MOUNTED.equals(state)) { 
   File sdcardDir = Environment.getExternalStorageDirectory(); 
   StatFs sf = new StatFs(sdcardDir.getPath()); 
   long bSize = sf.getBlockSize(); 
   long bCount = sf.getBlockCount(); 
   long availBlocks = sf.getAvailableBlocks(); 

   sdCardInfo[0] = bSize * bCount;//总大小 
   sdCardInfo[1] = bSize * availBlocks;//可用大小 
  } 
  return sdCardInfo; 
 } 
 /**
  * 获取运行内存大小
  */
 public static String getAllTotalMemory() { 
  String str1 = "/proc/meminfo"; 
  String str2=""; 
  try { 
   FileReader fr = new FileReader(str1); 
   BufferedReader localBufferedReader = new BufferedReader(fr, 8192); 
   while ((str2 = localBufferedReader.readLine()) != null) { 
    return str2;
   } 
  } catch (IOException e) { 
  }
  return "获取失败"; 
 } 
 /**
  * 从字符串里面提取数字转为long类型
  * @param str
  * @return
  */
 public static long getNumberToString(String str){

  String regEx="[^0-9]";  
  Pattern p = Pattern.compile(regEx);  
  Matcher m = p.matcher(str); 
  String s=m.replaceAll("").trim();
  return Integer.valueOf(s);
 }
 /**
  * 获取手机上的所有app,除系统app
  * @return
  */
 public static String getAllApp(Context context) {   
  String result = "";   
  List<PackageInfo> packages =context.getPackageManager().getInstalledPackages(0);   
  for (PackageInfo i : packages) {   
   if ((i.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {   
    result += i.applicationInfo.loadLabel(context.getPackageManager()).toString() + ",";   
   }   
  }   
  return result.substring(0, result.length() - 1);   

 } 

 /**
  * 查询手机内系统应用
  * @param context
  * @return
  */ 
 public static List<PackageInfo> getAllSystemApps(Context context) { 
  List<PackageInfo> apps = new ArrayList<PackageInfo>(); 
  PackageManager pManager = context.getPackageManager(); 
  //获取手机内所有应用 
  List<PackageInfo> paklist = pManager.getInstalledPackages(0); 
  for (int i = 0; i < paklist.size(); i++) { 
   PackageInfo pak = (PackageInfo) paklist.get(i); 
   //判断是否为非系统预装的应用程序 
   if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) >= 0) {  //设置>0为系统应用,小于0未非系统应用
    // customs applications 
    apps.add(pak); 
   } 
  } 
  return apps; 
 } 
 /**
  * 查询手机内非系统应用
  * @param context
  * @return
  */ 
 public static List<PackageInfo> getAllOtherApps(Context context) { 
  List<PackageInfo> apps = new ArrayList<PackageInfo>(); 
  PackageManager pManager = context.getPackageManager(); 
  //获取手机内所有应用 
  List<PackageInfo> paklist = pManager.getInstalledPackages(0); 
  for (int i = 0; i < paklist.size(); i++) { 
   PackageInfo pak = (PackageInfo) paklist.get(i); 
   //判断是否为非系统预装的应用程序 
   if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {  //设置>0为系统应用,小于0未非系统应用
    // customs applications 
    apps.add(pak); 
   } 
  } 
  return apps; 
 } 
 /**
  * 跳转到应用信息
  * @param context
  * @return
  */
 public static Intent getAppDetailSettingIntent(Context context) {
  Intent localIntent = new Intent();
  localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  if (Build.VERSION.SDK_INT >= 9) {
   localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
   localIntent.setData(Uri.fromParts("package", "com.example.activity",null));
  } else if (Build.VERSION.SDK_INT <= 8) {
   localIntent.setAction(Intent.ACTION_VIEW);
   localIntent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
   localIntent.putExtra("com.android.settings.ApplicationPkgName", "com.example.activity");
  }
  return localIntent;
 }
 /**
  * 小米手机跳转到权限管理页面
  * @param context
  */
 public static void goMiUiSetting(Context context){
  PackageInfo info = null;
  PackageManager pm=context.getPackageManager();
  try {

   info = pm.getPackageInfo(context.getPackageName(), 0);
  } catch (NameNotFoundException e) {
   e.printStackTrace();
  }
  Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");
  i.setClassName("com.android.settings", "com.miui.securitycenter.permission.AppPermissionsEditor");
  i.putExtra("extra_package_uid", info.applicationInfo.uid);
  try {
   context.startActivity(i);
  } catch (Exception e) {
   Toast.makeText(context, "只有MIUI才可以设置哦", Toast.LENGTH_SHORT).show();
  }
 }
 /**
  * 华为手机跳转到权限设置页面
  * @param context
  */
 public static void goHuaWeiSetting(Context context)  {
  try {
   //HUAWEI H60-l02 P8max测试通过
   Log.d(MainActivity.class.getSimpleName(), "进入指定app悬浮窗管理页面失败,自动进入所有app悬浮窗管理页面");
   Intent intent = new Intent("com.example.activity");
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   //   ComponentName comp = new ComponentName("com.huawei.systemmanager","com.huawei.permissionmanager.ui.MainActivity");//华为权限管理
   //   ComponentName comp = new ComponentName("com.huawei.systemmanager",
   //      "com.huawei.permissionmanager.ui.SingleAppActivity");//华为权限管理,跳转到本app的权限管理页面,这个需要华为接口权限,未解决
   ComponentName comp = new ComponentName("com.huawei.systemmanager","com.huawei.systemmanager.addviewmonitor.AddViewMonitorActivity");//悬浮窗管理页面
   intent.setComponent(comp);
   context.startActivity(intent);
  } catch (SecurityException e) {
   Intent intent = new Intent("com.example.activity");
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   //   ComponentName comp = new ComponentName("com.huawei.systemmanager","com.huawei.permissionmanager.ui.MainActivity");//华为权限管理
   ComponentName comp = new ComponentName("com.huawei.systemmanager",
     "com.huawei.permissionmanager.ui.MainActivity");//华为权限管理,跳转到本app的权限管理页面,这个需要华为接口权限,未解决
   //      ComponentName comp = new ComponentName("com.huawei.systemmanager","com.huawei.systemmanager.addviewmonitor.AddViewMonitorActivity");//悬浮窗管理页面
   intent.setComponent(comp);
   context.startActivity(intent);
   Log.d(MainActivity.class.getSimpleName(), "正在进入指定app悬浮窗开启位置..");
  }catch(ActivityNotFoundException e){
   /**
    * 手机管家版本较低 HUAWEI SC-UL10
    */
   //   Toast.makeText(MainActivity.this, "act找不到", Toast.LENGTH_LONG).show();
   Intent intent = new Intent("com.example.activity");
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   ComponentName comp = new ComponentName("com.android.settings","com.android.settings.permission.TabItem");//权限管理页面 android4.4
   //   ComponentName comp = new ComponentName("com.android.settings","com.android.settings.permission.single_app_activity");//此处可跳转到指定app对应的权限管理页面,但是需要相关权限,未解决
   intent.setComponent(comp);
   context.startActivity(intent);
   e.printStackTrace();
  }
  catch(Exception e){
   //抛出异常时提示信息
   Toast.makeText(context, "进入设置页面失败,请手动设置", Toast.LENGTH_LONG).show();
  }

 }
 /**
  * 自动启动管理
  * @param context
  */
 public static final void goChangPwd(Context context){
  try {
   Intent intent = new Intent("com.example.activitiy");
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   ComponentName comp = new ComponentName("com.huawei.systemmanager",
     "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");//仅对华为有效
   intent.setComponent(comp);
   context.startActivity(intent);
   Log.d(MainActivity.class.getSimpleName(), "正在进入手机管家自动启动权限管理页面。。。");
  } catch (Exception e) {
   //抛出异常时提示信息
   Toast.makeText(context, "操作异常,进入失败", Toast.LENGTH_LONG).show();
  }
 }
 /**
  * 受保护应用
  *
  * @param context cmp=com.huawei.systemmanager/.optimize.process.ProtectActivity
  */
 public static final void setProtectApp(Context context){
  try {
   Intent intent = new Intent("com.example.activitiy");
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   ComponentName comp = new ComponentName("com.huawei.systemmanager",
     "com.huawei.systemmanager.optimize.process.ProtectActivity");//仅对华为有效
   intent.setComponent(comp);
   context.startActivity(intent);
   Log.d(MainActivity.class.getSimpleName(), "正在进入手机管家自动启动权限管理页面。。。");
  } catch (Exception e) {
   //抛出异常时提示信息
   Toast.makeText(context, "操作异常,进入失败", Toast.LENGTH_LONG).show();
  }
 }
 /**
  * 判断某个服务是否正在运行的方法
  * 
  * @param mContext
  * @param serviceName
  * 是包名+服务的类名(例如:net.loonggg.testbackstage.TestService)
  * @return true代表正在运行,false代表服务没有正在运行
  */ 
 public static boolean isServiceWork(Context mContext, String serviceName) { 
  boolean isWork = false; 
  ActivityManager myAM = (ActivityManager) mContext 
    .getSystemService(Context.ACTIVITY_SERVICE); 
  List<RunningServiceInfo> myList = myAM.getRunningServices(40); 
  if (myList.size() <= 0) { 
   return false; 
  } 
  for (int i = 0; i < myList.size(); i++) { 
   String mName = myList.get(i).service.getClassName().toString(); 
   if (mName.equals(serviceName)) { 
    isWork = true; 
    break; 
   } 
  } 
  return isWork; 
 } 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值