全是代码,慢慢看吧!
package com.pp.utils;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
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.Bundle;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
//import com.lzy.okserver.download.DownloadInfo;
//import com.lzy.okserver.download.DownloadManager;
//import com.lzy.okserver.listener.DownloadListener;
//import com.rinzz.avatar.db.json.Update;
import com.pp.ui.base.MyApp;
import java.io.File;
import java.io.InputStream;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
/**
* @author suming
* 必要要继承BaseApplication才可以使用这个类
*/
public final class A {
private static ArrayList<PackageInfo> pinfo = new ArrayList<>();
/**
* 获取屏幕的长宽(前提是必须继承BaseApplication类)
*
* @return
*/
public static int[] getScreenSize() {
int[] screens;
DisplayMetrics dm = MyApp.getApp().getResources().getDisplayMetrics();
screens = new int[]{dm.widthPixels, dm.heightPixels};
return screens;
}
/**
* 获取图片的长宽(前提是必须继承BaseApplication类)
*
* @param bitmap
* @param imageView
* @param screenRadio
* @return
*/
public static float[] getBitmapConfiguration(Bitmap bitmap,
ImageView imageView, float screenRadio) {
int screenWidth = A.getScreenSize()[0];
float rawWidth = 0;
float rawHeight = 0;
float width = 0;
float height = 0;
if (bitmap == null) {
// rawWidth = sourceWidth;
// rawHeight = sourceHeigth;
width = (float) (screenWidth / screenRadio);
height = (float) width;
imageView.setScaleType(ScaleType.FIT_XY);
} else {
rawWidth = bitmap.getWidth();
rawHeight = bitmap.getHeight();
if (rawHeight > 10 * rawWidth) {
imageView.setScaleType(ScaleType.CENTER);
} else {
imageView.setScaleType(ScaleType.FIT_XY);
}
float radio = rawHeight / rawWidth;
width = (float) (screenWidth / screenRadio);
height = (float) (radio * width);
}
return new float[]{width, height};
}
/**
* 得到屏幕的长宽(通过Activity)
*
* @param activity
* @return
*/
public static int[] getScreenSize(Activity activity) {
int[] screens;
// if (Constants.screenWidth > 0) {
// return screens;
// }
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
screens = new int[]{dm.widthPixels, dm.heightPixels};
return screens;
}
/**
* 得到系统的版本名
*
* @param context
* @return
*/
public static String getVersionName(Context context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(context.getPackageName(), 0);
return info.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 得到系统的版本号
*
* @param context
* @return
*/
public static int getVersionCode(Context context) {
try {
PackageInfo pi = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0);
return pi.versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
return 0;
}
}
public static int getVersionCode(Context context, String packageName) {
try {
PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(packageName, 0);
return info.versionCode;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 得到Android的sdk版本
*
* @return
*/
public static int getSystemVersion() {
return Build.VERSION.SDK_INT;
}
/**
* 打开外部浏览器
*
* @param context
*/
public static void openBrowser(Context context, String urlText) {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri url = Uri.parse(urlText);
intent.setData(url);
context.startActivity(intent);
}
/**
* 切换全屏模式
*
* @param activity Activity
* @param isFull 是否充满屏幕
*/
public static void toggleFullScreen(Activity activity, boolean isFull) {
hideTitleBar(activity);
Window window = activity.getWindow();
WindowManager.LayoutParams params = window.getAttributes();
if (isFull) {
params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
window.setAttributes(params);
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else {
params.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.setAttributes(params);
window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
}
/**
* 切换全屏模式(充满)
*
* @param activity Activity
*/
public static void setFullScreen(Activity activity) {
toggleFullScreen(activity, true);
}
/**
* 得到状态栏的高度
*
* @param activity Activity
* @return 系统状态锟斤拷锟侥高讹拷
*/
public static int getStatusBarHeight(Activity activity) {
try {
Class<?> clazz = Class.forName("com.android.internal.R$dimen");
Object object = clazz.newInstance();
Field field = clazz.getField("status_bar_height");
int dpHeight = Integer.parseInt(field.get(object).toString());
return activity.getResources().getDimensionPixelSize(dpHeight);
} catch (Exception e1) {
e1.printStackTrace();
return 0;
}
}
/**
* 获得屏幕高度
*
* @param context
* @return
*/
public static int getScreenHeight(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightPixels;
}
/**
* 获取屏幕原始尺寸高度,包括虚拟功能键高度
*/
public static int getDpi(Context context) {
int dpi = 0;
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
@SuppressWarnings("rawtypes")
Class c;
try {
c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
method.invoke(display, displayMetrics);
dpi = displayMetrics.heightPixels;
} catch (Exception e) {
e.printStackTrace();
}
return dpi;
}
/**
* 获取虚拟导航栏高度
*/
public static int getNavigationHeight(Context context) {
return getDpi(context) - getScreenHeight(context);
}
/**
* 隐藏标题
*
* @param activity Activity
*/
public static void hideTitleBar(Activity activity) {
activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
}
/**
* 设置竖屏
*
* @param activity Activity
*/
public static void setScreenVertical(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/**
* 设置横屏
*
* @param activity Activity
*/
public static void setScreenHorizontal(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
public static boolean isPortraitScreen(Activity activity) {
Configuration mConfiguration = activity.getResources().getConfiguration(); //获取设置的配置信息
int ori = mConfiguration.orientation; //获取屏幕方向
if (ori == mConfiguration.ORIENTATION_LANDSCAPE) {
//横屏
return false;
} else if (ori == mConfiguration.ORIENTATION_PORTRAIT) {
//竖屏
return true;
}
return true;
}
/**
* 隐藏软键盘
*
* @param activity Activity
*/
public static void hideSoftInput(Activity activity) {
activity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
public static void openSoftInput(final View focusingView) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) focusingView.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(focusingView, 0);
}
}, 500);
}
/**
* 关闭软键盘
*
* @param focusingView 设置获取焦点的view
*/
public static void closeSoftInput(View focusingView) {
InputMethodManager imm = (InputMethodManager) MyApp.getApp()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(focusingView.getWindowToken(),
InputMethodManager.RESULT_UNCHANGED_SHOWN);
}
/**
* 调整软键盘
*
* @param activity Activity
*/
public static void adjustSoftInput(Activity activity) {
activity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
public interface MessageFilter {
String filter(String msg);
}
public static MessageFilter msgFilter;
/**
* dp转px
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* dp转px
*/
public static int dip2px(float dpValue) {
final float scale = MyApp.getApp().getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* px转dp
*/
public static int px2dip(float pxValue) {
final float scale = MyApp.getApp().getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* activity切换动画
*
* @param m
* @param isEnd
*/
@SuppressLint("NewApi")
public static void runActivityAnim(Activity m, boolean isEnd,
int closeEnter, int closeExit, int openEnter, int openExit) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.DONUT) {
if (isEnd) {
m.overridePendingTransition(closeEnter, closeExit);
} else {
m.overridePendingTransition(openEnter, openExit);
}
}
}
/**
* 是否添加了快捷方式
*
* @return
*/
public static boolean ifAddShortCut(int shortCutNameId) {
boolean isInstallShortCut = false;
ContentResolver cr = MyApp.getApp().getContentResolver();
String shortCutName = MyApp.getApp().getString(shortCutNameId);
String authority = "com.android.launcher2.settings";
Uri uri = Uri
.parse("content://" + authority + "/favorites?notify=true");
Cursor c = cr.query(uri, new String[]{"title", "iconResource"},
"title=?", new String[]{shortCutName}, null);
if (null != c && c.getCount() > 0) {
isInstallShortCut = true;
}
return isInstallShortCut;
}
public static void deleteShortCut(Context context, String cutName) {
Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
//快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, cutName);
/**删除和创建需要对应才能找到快捷方式并成功删除**/
Intent intent = new Intent();
intent.setClass(context, context.getClass());
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
context.sendBroadcast(shortcut);
}
/**
* 得到系统唯一标识IMEI
*
* @return
*/
public static String getImei() {
try {
TelephonyManager tm = (TelephonyManager) MyApp.getApp()
.getSystemService(Context.TELEPHONY_SERVICE);
return tm.getDeviceId();
} catch (Exception e) {
return null;
}
}
/**
* 获取网卡mac地址
*
* @return
*/
public static String getMac() {
try {
//wifi mac地址
WifiManager wifi = (WifiManager) MyApp.getApp().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String wifiMac = info.getMacAddress();
return wifiMac;
} catch (Exception e) {
return null;
}
}
/**
* 获取网卡ip地址
*
* @return
*/
public static int getIp() {
try {
//wifi mac地址
WifiManager wifi = (WifiManager) MyApp.getApp().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
int ipAddress = info.getIpAddress();
return ipAddress;
} catch (Exception e) {
return 0;
}
}
/**
* 获取序列号
*
* @return
*/
public static String getSerialNumber() {
String serial = null;
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
serial = (String) get.invoke(c, "ro.serialno");
} catch (Exception e) {
e.printStackTrace();
}
return serial;
}
/**
* 尝试打开wifi
*
* @param manager
* @return
*/
private static boolean tryOpenMAC(WifiManager manager) {
boolean softOpenWifi = false;
int state = manager.getWifiState();
if (state != WifiManager.WIFI_STATE_ENABLED && state != WifiManager.WIFI_STATE_ENABLING) {
manager.setWifiEnabled(true);
softOpenWifi = true;
}
return softOpenWifi;
}
/**
* 尝试关闭MAC
*
* @param manager
*/
private static void tryCloseMAC(WifiManager manager) {
manager.setWifiEnabled(false);
}
// public static String getDeviceId(Context context) {
// StringBuilder deviceId = new StringBuilder();
// // 渠道标志
// deviceId.append("rinzz:");
// try {
// //IMEI(imei)
// TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
// String imei = tm.getDeviceId();
// if (!TextUtils.isEmpty(imei)) {
// deviceId.append("imei");
// deviceId.append(imei);
L.e("getDeviceId : ", deviceId.toString());
// return deviceId.toString();
// }
// //序列号(sn)
// String sn = tm.getSimSerialNumber();
// if (!TextUtils.isEmpty(sn)) {
// deviceId.append("sn");
// deviceId.append(sn);
L.e("getDeviceId : ", deviceId.toString());
// return deviceId.toString();
// }
// //wifi mac地址
// WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
// WifiInfo info = wifi.getConnectionInfo();
// String wifiMac = info.getMacAddress();
// if (!TextUtils.isEmpty(wifiMac)) {
// deviceId.append("wifi");
// deviceId.append(wifiMac);
L.e("getDeviceId : ", deviceId.toString());
// return deviceId.toString();
// }
// //如果上面都没有, 则生成一个id:随机码
// String uuid = UUID.randomUUID().toString();
// if (!TextUtils.isEmpty(uuid)) {
// deviceId.append("id");
// deviceId.append(uuid);
L.e("getDeviceId : ", deviceId.toString());
// return deviceId.toString();
// }
// } catch (Exception e) {
// e.printStackTrace();
// deviceId.append("id").append(UUID.randomUUID().toString());
// }
//
// L.e("getDeviceId : ", deviceId.toString());
//
// return deviceId.toString();
// }
/**
* 获取设备id imei + WiFi
*
* @param context
* @return
*/
public static String getRinzzDeviceId(Context context) {
StringBuilder deviceId = new StringBuilder();
// 渠道标志
deviceId.append("rinzz:");
try {
//IMEI(imei)
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
if (!TextUtils.isEmpty(imei)) {
deviceId.append("imei");
deviceId.append(imei);
// L.e("getDeviceId : ", deviceId.toString());
}
//wifi mac地址 (备选条件,如果用户手动拒绝了打开wifi,那没办法)
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String wifiMac = info.getMacAddress();
if (!TextUtils.isEmpty(wifiMac)) {
deviceId.append("wifi");
deviceId.append(wifiMac);
// L.e("getDeviceId : ", deviceId.toString());
} else {
//打开wifi
boolean isWifiOpen = tryOpenMAC(wifi);
wifiMac = info.getMacAddress();
if (!TextUtils.isEmpty(wifiMac)) {
deviceId.append("wifi");
deviceId.append(wifiMac);
}
//关闭wifi
if (isWifiOpen) {
tryCloseMAC(wifi);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
L.e("getDeviceId : ", deviceId.toString());
String deviceIdStr = deviceId.toString();
//有些时候wifimac会读取失败,所以不能完全排除wifimac
if (!deviceIdStr.contains("imei") && !deviceIdStr.contains("wifi")) {
return "unknown";
}
if (!deviceIdStr.contains("imei")) {
return "imeiUnknown";
}
if (!deviceIdStr.contains("wifi")) {
return "wifiUnknown";
}
return deviceId.toString();
}
}
/**
* 获取设备id imei
*
* @param context
* @return
*/
public static String getRinzzDeviceIdNoWifi(Context context) {
StringBuilder deviceId = new StringBuilder();
// 渠道标志
deviceId.append("rinzz:");
try {
//IMEI(imei)
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
if (!TextUtils.isEmpty(imei)) {
deviceId.append("imei");
deviceId.append(imei);
// L.e("getDeviceId : ", deviceId.toString());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
L.e("getDeviceId_NoWifi: ", deviceId.toString());
String deviceIdStr = deviceId.toString();
if (!deviceIdStr.contains("imei")) {
return "unknown";
}
return deviceId.toString();
}
}
/**
* 是否连接到网络
*
* @return
*/
public static boolean hasNetwork() {
ConnectivityManager connectivity = (ConnectivityManager) MyApp.getApp()
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
if (info.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
return false;
}
/**
* Android直接安装apk
*
* @param file
*/
public static void installApk(Context context, File file) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),
"application/vnd.android.package-archive");
context.startActivity(intent);
}
/**
* 检测是否安装
*
* @param context
* @param packageName
* @return
*/
public static boolean isHadInstall(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();
// 获取所有已安装程序的包信息
if (pinfo == null || pinfo.size() == 0) {
pinfo.clear();
pinfo.addAll(packageManager.getInstalledPackages(0));
}
for (PackageInfo packageInfo : pinfo) {
if (packageInfo.packageName.equalsIgnoreCase(packageName)) {
return true;
}
}
return false;
}
public static void startAPP(Context context, String appPackageName) {
try {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(appPackageName);
context.startActivity(intent);
} catch (Exception e) {
L.i("无法打开" + appPackageName);
}
}
public static void startActivity(Class<?> activityClass) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static <T> void startActivity(Class<?> activityClass, T object) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putExtra(object.getClass().getSimpleName(), object.toString());
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static <T> void startActivity(Class<?> activityClass, T object, String name) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putExtra(name, object.toString());
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivityWithParcelables(Class<?> activityClass, Class<?> dataClass, ArrayList<? extends Parcelable> data) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putParcelableArrayListExtra(dataClass.getSimpleName(), data);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivityWithParcelable(Class<?> activityClass, Parcelable parcelable) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putExtra(parcelable.getClass().getSimpleName(), parcelable);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivityWithParcelable(Class<?> activityClass, String name, Parcelable parcelable) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putExtra(name, parcelable);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivityWithSerializable(Class<?> activityClass, Serializable serializable) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putExtra(serializable.getClass().getSimpleName(), serializable);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivity(Class<?> activityClass, Bundle bundle) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.putExtras(bundle);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivity(Class<?> activityClass, String action) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.setAction(action);
MyApp.getApp().getTopActivity().startActivity(intent);
}
public static void startActivityForResult(Class<?> activityClass, String action, int requestCode) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
intent.setAction(action);
MyApp.getApp().getTopActivity().startActivityForResult(intent, requestCode);
}
public static void startActivityForResult(Class<?> activityClass, int requestCode) {
Intent intent = new Intent(MyApp.getApp().getTopActivity(), activityClass);
MyApp.getApp().getTopActivity().startActivityForResult(intent, requestCode);
}
/**
* 获取Activity中的meta
*
* @param context 必须传activity
* @return
*/
public static String readMetaFromActivity(Context context, String data_Name) {
try {
Activity activity = (Activity) context;
ActivityInfo acitivityInfo = context.getPackageManager()
.getActivityInfo(activity.getComponentName(),
PackageManager.GET_META_DATA);
return acitivityInfo.metaData.getString(data_Name);
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
/**
* 获取application中的meta
*
* @param context 可以传application也可以传activity
* @return
*/
public static String readMetaFromApplication(Context context, String data_Name) {
try {
ApplicationInfo appInfo = context.getPackageManager()
.getApplicationInfo(context.getPackageName(),
PackageManager.GET_META_DATA);
return appInfo.metaData.getString(data_Name);
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
/**
* 获取service中的meta
*
* @param context 可以传application也可以传activity
* @param service Service类
* @return
*/
public static String readMetaFromService(Context context, Class<Service> service, String data_Name) {
ComponentName cn = new ComponentName(context, service);
try {
ServiceInfo serviceInfo = context.getPackageManager().getServiceInfo(cn,
PackageManager.GET_META_DATA);
return serviceInfo.metaData.getString(data_Name);
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
/**
* 获取BroadcastReceiver中的meta
*
* @param context 可以传application也可以传activity
* @param reciver BroadcastReceiver类
* @return
*/
public static String readMetaFromReciever(Context context, Class<BroadcastReceiver> reciver, String data_Name) {
ComponentName cn = new ComponentName(context, reciver);
try {
ActivityInfo reciverInfo = context.getPackageManager().getReceiverInfo(cn,
PackageManager.GET_META_DATA);
return reciverInfo.metaData.getString(data_Name);
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
/**
* 以最省资源的方式访问资源id
*/
@SuppressWarnings("deprecation")
public static Bitmap readBitMap(int resId) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
// 获取资源图片
InputStream is = MyApp.getApp().getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is, null, opt);
}
/**
* 实现文本复制功能
*
* @param content
*/
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
public static void copyText(String content) {
if (A.getSystemVersion() >= 11) {
ClipboardManager cmb = (ClipboardManager) MyApp.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setPrimaryClip(ClipData.newPlainText("data", content));
} else {
android.text.ClipboardManager cmb = (android.text.ClipboardManager) MyApp.getApp()
.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(content.trim());
}
}
/**
* 实现粘贴功能
*
* @return
*/
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public static String pasteText() {
if (A.getSystemVersion() >= 11) {
ClipboardManager cmb = (ClipboardManager) MyApp.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
return cmb.getText().toString().trim();
} else {
android.text.ClipboardManager cmb = (android.text.ClipboardManager) MyApp.getApp()
.getSystemService(Context.CLIPBOARD_SERVICE);
return cmb.getText().toString().trim();
}
}
/**
* 分享功能
*
* @param context
* @param shareTitle
* @param msgTitle
* @param content
* @param fileName
*/
public static void shareMsg(Context context, String shareTitle, String msgTitle, String content, String fileName) {
Intent intent = new Intent(Intent.ACTION_SEND);
if (TextUtils.isEmpty(fileName)) {
intent.setType("text/plain"); // 纯文本
} else {
Bitmap bitmap = BitmapUtil.getBitmapFromAssetsFile(context, fileName);
if (bitmap != null) {
Uri imgUri = Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, null, null));
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, imgUri);
} else {
intent.setType("text/plain"); // 纯文本
}
}
intent.putExtra(Intent.EXTRA_SUBJECT, msgTitle);
intent.putExtra("Kdescription", msgTitle);
intent.putExtra(Intent.EXTRA_TEXT, content);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(Intent.createChooser(intent, shareTitle));
}
public static boolean isMobileConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); //获取移动网络信息
if (mMobileNetworkInfo != null && mMobileNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return mMobileNetworkInfo.isAvailable();
}
}
return false;
}
/**
* 获取设备id imei
*
* @param context
* @return
*/
public static String getDeviceId(Context context) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
return imei;
}
/**
* 判断是否安装了某应用
*
* @param context
* @param packageName 需要判断的应用包名
* @return
*/
public static boolean isPkgInstalled(Context context, String packageName) {
PackageInfo packageInfo = null;
try {
packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if (packageInfo == null) {
return false;
} else {
return true;
}
}
/**
* 打开第三方APP
*
* @param context
* @param packageName
*/
public static void openThirdApp(Context context, String packageName) {
PackageManager packageManager = context.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(packageName);
context.startActivity(intent);
}
}