package com.mm.android.deviceaddmodule.mobilecommon.utils; import android.content.ComponentName; import android.content.ContentUris; import android.content.ContentValues; 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.graphics.Bitmap; import android.graphics.Color; import android.location.Criteria; import android.location.Location; import android.location.LocationManager; import android.net.Uri; import android.os.Build; import android.provider.ContactsContract; import android.provider.Settings; import android.text.SpannableString; import android.text.Spanned; import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.widget.TextView; import android.widget.Toast; import com.mm.android.deviceaddmodule.R; import com.mm.android.deviceaddmodule.mobilecommon.entity.AddContact; import java.io.File; import java.io.FileOutputStream; import java.text.NumberFormat; import java.util.List; public class CommonHelper { private static final String HWMobile = "HUAWEI"; /** * 使用该接口需要先申请位置权限,否则返回gps的数据是空的 * * @param context * @return */ public static double[] getGpsInfo(Context context) { Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE);//低精度,如果设置为高精度,依然获取不了location。 criteria.setAltitudeRequired(false);//不要求海拔 criteria.setBearingRequired(false);//不要求方位 criteria.setCostAllowed(true);//允许有花费 criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗 double[] gpsInfo = new double[2]; try { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); //从可用的位置提供器中,匹配以上标准的最佳提供器 if (locationManager != null) { String locationProvider = locationManager.getBestProvider(criteria, true); Location location = locationManager.getLastKnownLocation(locationProvider); if (location != null) { gpsInfo[0] = keepTwoDigitsOfDouble(location.getLongitude()); gpsInfo[1] = keepTwoDigitsOfDouble(location.getLatitude()); } } LogUtil.debugLog("CommonHelper", "Longitude: " + gpsInfo[0] + " & Latitude: " + gpsInfo[1]); } catch (SecurityException e) { e.printStackTrace(); }catch (Exception e1){ e1.printStackTrace(); } return gpsInfo; } /** * Double 数据保留2位小数点 * @param number * @return */ public static double keepTwoDigitsOfDouble(double number){ NumberFormat numberFormat = NumberFormat.getNumberInstance(); numberFormat.setMaximumFractionDigits(2); return Double.valueOf(numberFormat.format(number)); } //用户头像保存到本地 public static void savePhotoToLocal(String path, Bitmap bitmap) { File file = new File(path); if (file.exists()) { if (!file.delete()) return; } else { if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } } try { FileOutputStream out = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } // 判断是否安装应用 public static boolean isApkInstalled(Context context, String packageName) { if (TextUtils.isEmpty(packageName)) { return false; } PackageManager manager = context.getPackageManager(); List pkgList = manager.getInstalledPackages(0); if (pkgList != null) { for (int i = 0; i < pkgList.size(); i++) { PackageInfo pi = pkgList.get(i); if (pi.packageName.equalsIgnoreCase(packageName)) { return true; } } } return false; } // 启动应用 public static void startAppByPackageName(Context context, String packageName) { Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); context.startActivity(intent); } public static void gotoWifiSetting(Context context) { Intent intent = new Intent(); intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings")); List result = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_ALL); if(result.isEmpty()){ intent = new Intent(Settings.ACTION_WIFI_SETTINGS); } context.startActivity(intent); } public static void addContact(Context context , AddContact contact){ // 创建一个空的ContetnValues ContentValues values = new ContentValues(); // 向RawContacts.CONTENT_URI 空值插入 // 先获取android系统返回的rawContactId // 后面要基础此id插入值 Uri rawContactUri = context.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); //内容类型 values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); //联系人名字 values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, contact.getName()); //向联系人URI添加联系人名字 context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); values.clear(); for(AddContact.NumbersBean phone : contact.getNumbers()){ values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); //联系人的电话号码 values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone.getPhone()); //电话类型 values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); //向联系人电话号码URI添加电话号码 context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); values.clear(); } } public static String getChannel(Context context) { try { PackageManager pm = context.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); String channel = appInfo.metaData.getString("APP_CHANNEL_VALUE"); // key为标签中的name if (!TextUtils.isEmpty(channel)) { return channel; } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 是否是华为渠道包 * @return */ public static boolean isHuaweiFlavor(Context context){ return "huawei".equals(getChannel(context)); } /** * 根据渠道包跳转到应用市场 * @param context */ public static void gotoPlayStore(Context context) { if (context == null) { return; } if(isHuaweiFlavor(context)){ gotoHuaweiPlayStore(context); }else{ gotoGooglePlayStore(context); } } /** * 跳转谷歌应用商店 * @param context */ public static void gotoGooglePlayStore(Context context) { if (context == null) { return; } final String GOOGLE_PLAY = "com.android.vending";//谷歌商店,跳转别的商店改成对应的即可 String appPkg = context.getPackageName(); try { if (TextUtils.isEmpty(appPkg)) return; Uri uri = Uri.parse("market://details?id=" + appPkg); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setPackage(GOOGLE_PLAY); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } catch (Exception e) { //跳转失败的处理 Toast.makeText(context, R.string.mobile_common_no_google_play_detection, Toast.LENGTH_SHORT).show(); } } /** * 跳转华为应用商店 * @param context */ public static void gotoHuaweiPlayStore(Context context) { if (context == null) { return; } final String HUAWEI_PLAY = "com.huawei.appmarket";//华为商店,跳转别的商店改成对应的即可 String appPkg = context.getPackageName(); try { if (TextUtils.isEmpty(appPkg)) return; Uri uri = Uri.parse("market://details?id=" + appPkg); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.setPackage(HUAWEI_PLAY); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } catch (Exception e) { //跳转失败的处理 Toast.makeText(context, R.string.mobile_common_no_huawei_play_detection, Toast.LENGTH_SHORT).show(); } } /** * 是否是P以上系统 * @return */ public static boolean isAndroidPOrLater(){ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.P; } /** * 是否是Q以上系统 * @return */ public static boolean isAndroidQOrLater(){ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; } /** * 设置底部下划线并可点击跳转 */ public static void setProtocolClick(String str1, ClickableSpan span1, TextView textView) { SpannableString info = new SpannableString(str1); if (!TextUtils.isEmpty(str1)) { info.setSpan(span1, 0, str1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } textView.setText(info); textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setHighlightColor(Color.TRANSPARENT); } }