package com.vanco.abplayer.view;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Environment;
import android.widget.Toast;
public class ApplicationUtils {
/**
* 备份App 首先无需提升权限就就可以复制APK,查看权限你就会知道,在data/app下的APK权限如下:-rw-r--r-- system
* system 5122972 2012-12-13 10:38 com.taobao.taobao-1.apk 我们是有读取权限的。
*
* @param packageName
* @param mActivity
* @throws IOException
*/
public static void backupApp(String packageName, Activity mActivity)
throws IOException {
// 存放位置
String newFile = Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separator;
String oldFile = null;
try {
// 原始位置
oldFile = mActivity.getPackageManager().getApplicationInfo(
packageName, 0).sourceDir;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
System.out.println(newFile);
System.out.println(oldFile);
File in = new File(oldFile);
File out = new File(newFile + packageName + ".apk");
if (!out.exists()) {
out.createNewFile();
Toast.makeText(mActivity, "文件备份成功!" + "存放于" + newFile + "目录下", 1)
.show();
} else {
Toast.makeText(mActivity, "文件已经存在!" + "查看" + newFile + "目录下", 1)
.show();
}
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out);
int count;
// 文件太大的话,我觉得需要修改
byte[] buffer = new byte[256 * 1024];
while ((count = fis.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fis.close();
fos.flush();
fos.close();
}
/**
* 获取当前Apk版本号 android:versionCode
*
* @param context
* @return
*/
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
}
return verCode;
}
public static String getVerName(Context context) {
try {
return context.getPackageManager().getPackageInfo(
context.getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
}
return "";
}
/**
* 返回当前的应用是否处于前台显示状态 不需要android.permission.GET_TASKS权限
* http://zengrong.net/post/1680.htm
*
* @param packageName
* @return
*/
public static boolean isTopActivity(Context context, String packageName) {
// _context是一个保存的上下文
ActivityManager am = (ActivityManager) context.getApplicationContext()
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list = am
.getRunningAppProcesses();
if (list.size() == 0)
return false;
for (ActivityManager.RunningAppProcessInfo process : list) {
// Log.d(getTAG(), Integer.toString(__process.importance));
// Log.d(getTAG(), __process.processName);
if (process.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
&& process.processName.equals(packageName)) {
return true;
}
}
return false;
}
/**
* 检测APP是否存在
* @param context
* @param packageName
* @return
*/
public static boolean checkAppExist(Context context, String packageName) {
try {
ApplicationInfo info = context.getPackageManager()
.getApplicationInfo(packageName, 0);
return info != null && info.packageName.equals(packageName);
} catch (PackageManager.NameNotFoundException e) {
} catch (Exception e) {
}
return false;
}
}