Android开发之获取常用android设备参数信息
生活随笔
收集整理的這篇文章主要介紹了
Android开发之获取常用android设备参数信息
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如下圖:
查看工具類:下載apk的方法缺少xutils庫(kù),可以自己添加xutils庫(kù)
package com.mchsdk.paysdk.utils;import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Point; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.os.Environment; import android.provider.Settings; import android.support.v4.app.ActivityCompat; import android.support.v4.content.FileProvider; import android.telephony.TelephonyManager; import android.util.DisplayMetrics; import android.util.Log; import android.view.Display; import android.view.View; import android.widget.TextView; import android.widget.Toast;import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack;import java.io.File; import java.lang.reflect.Method; import java.math.BigDecimal; import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import java.util.Locale; import java.util.UUID;/*** @author xiayiye5* 2020年6月3日11:24:04* Android 開發(fā)用到的工具類*/ public class YhshUtils {//靜態(tài)內(nèi)部?jī)?nèi)實(shí)現(xiàn)單例設(shè)計(jì)模式private YhshUtils() {}public static YhshUtils getInstance() {return YhshSingle.CREATE;}private static class YhshSingle {private static final YhshUtils CREATE = new YhshUtils();}/*** 判斷是否安裝某APP** @param context 上下文* @param packageName apk包名* @return 返回結(jié)果*/public boolean isInstallApk(Context context, String packageName) {if (TextUtils.isEmpty(packageName)) {return false;}try {ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);return info != null;} catch (PackageManager.NameNotFoundException e) {return false;}}/*** 下載apk的方法** @param activity 上下文* @param downloadTextView 顯示下載的TextView*/private void downloadApk(final Activity activity, final View downloadTextView) {//將按鈕設(shè)置成正在下載中((TextView) downloadTextView).setText("正在下載中……");HttpUtils httpUtils = new HttpUtils();// 判斷sd卡是否掛載if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {final String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/gfan.apk";//獲取下載apk的地址String apkDownUrl = "http://cdn1.down.apk.gfan.net.cn/Pfiles/2020/05/21/gfanxapp_20200521194529_45df3390-b57e-4c16-b0fb-fb0ebcac1a80.apk";SharedPreferences downApkFile = activity.getSharedPreferences("DownApkFile", Context.MODE_PRIVATE);apkDownUrl = downApkFile.getString("downUrl", apkDownUrl);MCLog.e("打印apk下載url", apkDownUrl);httpUtils.download(apkDownUrl, filePath, new RequestCallBack<File>() {// 下載成功的時(shí)候調(diào)用@Overridepublic void onSuccess(ResponseInfo<File> arg0) {CommonLoading.getInstance().closeDialog();Toast.makeText(activity.getApplicationContext(), "下載成功", Toast.LENGTH_SHORT).show();// 安裝最新版本install(filePath, activity);}// 下載失敗的時(shí)候調(diào)用@Overridepublic void onFailure(HttpException arg0, String arg1) {Log.e("下載失敗", "失敗了:" + arg0.getLocalizedMessage());Toast.makeText(activity.getApplicationContext(), "下載失敗了," + arg0.getLocalizedMessage(), Toast.LENGTH_LONG).show();}@Overridepublic void onLoading(long total, long current, boolean isUploading) {super.onLoading(total, current, isUploading);int progress = (int) (((float) current / (float) total) * 100);Log.e("下載進(jìn)度", current + "/" + total + ":進(jìn)度" + progress + "%");//將按鈕設(shè)置成正在下載中 // ((TextView) downloadTextView).setText(new StringBuilder("正在下載中……").append(progress).append("%"));}});}}/*** 安裝最新版本** @param filePath 安裝包的路徑*/private void install(String filePath, Activity activity) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");Uri fileUri;File file = new File(filePath);if (Build.VERSION.SDK_INT >= 24) {fileUri = FileProvider.getUriForFile(activity, activity.getApplicationContext().getPackageName() + ".provider", file);} else {//android70.以下手機(jī)fileUri = Uri.fromFile(file);}//Android7.0以上必須添加如下代碼activity.grantUriPermission(activity.getPackageName(), fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.setDataAndType(fileUri, "application/vnd.android.package-archive");// 當(dāng)當(dāng)前的activity退出的時(shí)候,會(huì)調(diào)用之前activity的onActivityResult方法activity.startActivityForResult(intent, 0);}//先定義private static final int REQUEST_EXTERNAL_STORAGE = 1;private static String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"};public void checkPermission(Activity activity, View downloadTextView) {try {//檢測(cè)是否有寫的權(quán)限int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE");if (permission != PackageManager.PERMISSION_GRANTED) {// 沒有寫的權(quán)限,去申請(qǐng)寫的權(quán)限,會(huì)彈出對(duì)話框ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);} else {//下載安裝downloadApk(activity, downloadTextView);}} catch (Exception e) {e.printStackTrace();}}/*** @param activity 當(dāng)前activity* @return 1:豎屏 2 橫屏*/public int screenOrientation(Activity activity) {//獲取設(shè)置的配置信息return activity.getResources().getConfiguration().orientation;}/*** 保存token** @param loginToken token* @param activity activity頁(yè)面*/public void setLoginToken(Context activity, String loginToken) {SharedPreferences tokenFile = activity.getSharedPreferences("token_file", Context.MODE_PRIVATE);tokenFile.edit().putString("token_key", loginToken).apply();}/*** 取出登錄的token** @return 返回登錄的token*/public String getLoginToken(Activity activity) {SharedPreferences tokenFile = activity.getSharedPreferences("token_file", Context.MODE_PRIVATE);String tokenValue = tokenFile.getString("token_key", "");MCLog.e("打印保存的token", tokenValue + "=");return tokenValue;}/*** 獲取手機(jī)參數(shù)為了調(diào)用數(shù)據(jù)統(tǒng)計(jì)接口*/public PackageInfo getPhoneParam(Activity activity) {//獲取包管理器PackageManager pm = activity.getPackageManager();//獲取包信息try {PackageInfo packageInfo = pm.getPackageInfo(activity.getPackageName(), 0);//返回版本號(hào)String versionName = packageInfo.versionName;int versionCode = packageInfo.versionCode;return packageInfo;} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}return null;}/*** 獲取手機(jī)IMSI*/public String getIMSI(Activity context) {try {TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);//獲取IMSI號(hào)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (context.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {context.requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1008);}}String imsi = telephonyManager.getSubscriberId();if (null == imsi) {imsi = "";}return imsi;} catch (Exception e) {e.printStackTrace();return "";}}/*** 獲取當(dāng)前手機(jī)系統(tǒng)語言。** @return 返回當(dāng)前系統(tǒng)語言。例如:當(dāng)前設(shè)置的是“中文-中國(guó)”,則返回“zh-CN”*/public String getSystemLanguage() {return Locale.getDefault().getLanguage();}/*** 獲取當(dāng)前系統(tǒng)上的語言列表(Locale列表)** @return 語言列表*/public Locale[] getSystemLanguageList() {return Locale.getAvailableLocales();}/*** 獲取當(dāng)前手機(jī)系統(tǒng)版本號(hào)** @return 系統(tǒng)版本號(hào)*/public String getSystemVersion() {return android.os.Build.VERSION.RELEASE;}/*** 獲取手機(jī)型號(hào)** @return 手機(jī)型號(hào)*/public String getSystemModel() {return android.os.Build.MODEL;}/*** 獲取手機(jī)廠商** @return 手機(jī)廠商*/public String getDeviceBrand() {return android.os.Build.BRAND;}/*** 獲取IP地址** @param context 上下文* @return 返回值*/public String getIpAddress(Context context) {NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();if (info != null && info.isConnected()) {// 3/4g網(wǎng)絡(luò)if (info.getType() == ConnectivityManager.TYPE_MOBILE) {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() && inetAddress instanceof Inet4Address) {return inetAddress.getHostAddress();}}}} catch (SocketException e) {e.printStackTrace();}} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {// wifi網(wǎng)絡(luò)WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();return toIpAddress(wifiInfo.getIpAddress());} else if (info.getType() == ConnectivityManager.TYPE_ETHERNET) {// 有限網(wǎng)絡(luò)return getLocalIp();}}return null;}/*** 將int類型的IP地址轉(zhuǎn)為String類型的IP** @param ip IP地址* @return 返回IP數(shù)據(jù)*/private static String toIpAddress(int ip) {return (ip & 0xFF) + "." +((ip >> 8) & 0xFF) + "." +((ip >> 16) & 0xFF) + "." +(ip >> 24 & 0xFF);}/*** 獲取有限網(wǎng)IP** @return 返回*/private String getLocalIp() {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()&& inetAddress instanceof Inet4Address) {return inetAddress.getHostAddress();}}}} catch (SocketException ex) {ex.printStackTrace();}return "0.0.0.0";}/*** 獲取屏幕尺寸** @param context 當(dāng)前activity* @return 返回尺寸*/public double getScreenInch(Activity context) {double mInch = 0;try {int realWidth = 0, realHeight = 0;Display display = context.getWindowManager().getDefaultDisplay();DisplayMetrics metrics = new DisplayMetrics();display.getMetrics(metrics);if (android.os.Build.VERSION.SDK_INT >= 17) {Point size = new Point();display.getRealSize(size);realWidth = size.x;realHeight = size.y;} else if (android.os.Build.VERSION.SDK_INT < 17 && android.os.Build.VERSION.SDK_INT >= 14) {Method mGetRawH = Display.class.getMethod("getRawHeight");Method mGetRawW = Display.class.getMethod("getRawWidth");realWidth = (Integer) mGetRawW.invoke(display);realHeight = (Integer) mGetRawH.invoke(display);} else {realWidth = metrics.widthPixels;realHeight = metrics.heightPixels;}mInch = formatDouble(Math.sqrt((realWidth / metrics.xdpi) * (realWidth / metrics.xdpi) + (realHeight / metrics.ydpi) * (realHeight / metrics.ydpi)), 1);} catch (Exception e) {e.printStackTrace();}return mInch;}/*** Double類型保留指定位數(shù)的小數(shù),返回double類型(四舍五入)* newScale 為指定的位數(shù)*/private double formatDouble(double d, int newScale) {BigDecimal bd = new BigDecimal(d);return bd.setScale(newScale, BigDecimal.ROUND_HALF_UP).doubleValue();}/*** 獲取android的唯一標(biāo)識(shí)** @param context 上下文* @return 返回androidId*/public String getAndroidId(Context context) {final String uuid = UUID.randomUUID().toString();String androidId = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);if (TextUtils.isEmpty(androidId)) {return uuid;} else {return androidId;}} }?
總結(jié)
以上是生活随笔為你收集整理的Android开发之获取常用android设备参数信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李想:理想汽车不会降价
- 下一篇: 理想汽车CEO:电池原材料将大幅降价 但