loadApps();
/**
* 加载app
*/
private void loadApps() {
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = getPackageManager().queryIntentActivities(intent, 0);
}
/**
* @param packageName 包名
* @return
*/
public boolean isAppRunning(String packageName) {
List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();
for (AndroidAppProcess process : processes) {
String processName = process.name;
if (processName.equals(packageName)) {
Log.e(TAG, "isAppRunning: 检测到运行app:" + processName);
return true;
}
}
return false;
}
/**
* 拉起白名单 若程序未运行及拉起
*/
private boolean launchApp(String pkgName, String actname) {
// 判断是否安装过App,
if (isPkgInstalled(MainActivity.this, pkgName) && !isAppRunning(pkgName)) {
ShellUtils.launcherApp(pkgName, actname);
return true;
}
return false;
}
/**
* 判断是否已经安装过app
*/
private boolean isPkgInstalled(Context context, String pkgName) {
PackageInfo packageInfo = null;
try {
packageInfo = context.getPackageManager().getPackageInfo(pkgName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageInfo = null;
}
return packageInfo != null;
}
/** 用于拉起Activity
* @param pakname 包名
* @param actname MainActivity 名
*/
public static void launcherApp(String pakname, String actname){
execShell("am start -n "+pakname+"/."+actname,true);
}
/**通用adb命令调用**/
public static void execShell(String cmd, boolean isroot){
try{
//权限设置
Process p = Runtime.getRuntime().exec( isroot?"su":"sh");
//获取输出流
OutputStream outputStream = p.getOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
//将命令写入
dataOutputStream.writeBytes(cmd+"\n");
//提交命令
dataOutputStream.flush();
dataOutputStream.writeBytes("exit\n");
dataOutputStream.flush();
//关闭流操作
dataOutputStream.close();
outputStream.close();
}
catch(Throwable t)
{
t.printStackTrace();
}
}
package com.android.pullupapp;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.SystemClock;
import android.telephony.TelephonyManager;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Calendar;
/**
* Created by zhaobin on 2018/5/31. 优先采用此adb命令
* 战成方法集合
*/
public class ShellUtils {
/**通用adb命令调用**/
public static void execShell(String cmd, boolean isroot){
try{
//权限设置
Process p = Runtime.getRuntime().exec( isroot?"su":"sh");
//获取输出流
OutputStream outputStream = p.getOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(outputStream);
//将命令写入
dataOutputStream.writeBytes(cmd+"\n");
//提交命令
dataOutputStream.flush();
dataOutputStream.writeBytes("exit\n");
dataOutputStream.flush();
//关闭流操作
dataOutputStream.close();
outputStream.close();
}
catch(Throwable t)
{
t.printStackTrace();
}
}
/** 用于拉起Activity
* @param pakname 包名
* @param actname MainActivity 名
*/
public static void launcherApp(String pakname, String actname){
execShell("am start -n "+pakname+"/."+actname,true);
}
/**设置有返回值调用*/
public static void execCommand(String command) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command);
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
BufferedReader in = new BufferedReader(new InputStreamReader(
proc.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
String line = null;
while ((line = in.readLine()) != null) {
stringBuffer.append(line+" ");
}
System.out.println(stringBuffer.toString());
} catch (InterruptedException e) {
System.err.println(e);
}finally{
try {
proc.destroy();
} catch (Exception e2) {
}
}
}
/**设置系统时间*/
public static void setSystemTime(final Context cxt, String datetimes) {
try {
Process process = Runtime.getRuntime().exec("su");
String datetime = "20131023.112800"; // 测试的设置的时间【时间格式
// String datetime = ""; // 测试的设置的时间【时间格式
// datetime = datetimes.toString(); // yyyyMMdd.HHmmss】
DataOutputStream os = new DataOutputStream(
process.getOutputStream());
os.writeBytes("setprop persist.sys.timezone GMT\n");
os.writeBytes("/system/bin/date -s " + datetimes + "\n");
os.writeBytes("clock -w\n");
os.writeBytes("exit\n");
os.flush();
} catch (IOException e) {
Toast.makeText(cxt, "请获取Root权限", Toast.LENGTH_SHORT).show();
}
}
/**战成提供设置系统时间的接口 废弃*/
public static void setZCSysTime(Context context){
long now = Calendar.getInstance().getTimeInMillis();
SystemClock.setCurrentTimeMillis(now);
Intent intent =new Intent();
intent.setAction(Intent.ACTION_TIME_TICK);
context.sendBroadcast(intent);
}
/**获取当前使用的网络*/
public static String getAPNType(Context context) {
//结果返回值
String netType = "nono_connect";
//获取手机所有连接管理对象
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取NetworkInfo对象
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
//NetworkInfo对象为空 则代表没有网络
if (networkInfo == null) {
return netType;
}
//否则 NetworkInfo对象不为空 则获取该networkInfo的类型
int nType = networkInfo.getType();
if (nType == ConnectivityManager.TYPE_WIFI) {
//WIFI
netType = "wifi";
} else if (nType == ConnectivityManager.TYPE_MOBILE) {
int nSubType = networkInfo.getSubtype();
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//4G
if (nSubType == TelephonyManager.NETWORK_TYPE_LTE
&& !telephonyManager.isNetworkRoaming()) {
netType = "4G";
} else if (nSubType == TelephonyManager.NETWORK_TYPE_UMTS || nSubType == TelephonyManager.NETWORK_TYPE_HSDPA || nSubType == TelephonyManager.NETWORK_TYPE_EVDO_0 && !telephonyManager.isNetworkRoaming()) {
netType = "3G";
//2G 移动和联通的2G为GPRS或EGDE,电信的2G为CDMA
} else if (nSubType == TelephonyManager.NETWORK_TYPE_GPRS || nSubType == TelephonyManager.NETWORK_TYPE_EDGE || nSubType == TelephonyManager.NETWORK_TYPE_CDMA && !telephonyManager.isNetworkRoaming()) {
netType = "2G";
} else {
netType = "2G";
}
}
return netType;
}
/**获取储存信息*/
public static String getMemoryInfo() {
String str1 = "/proc/meminfo";
String str2="";
StringBuffer buffer=new StringBuffer();
int index=0;
try {
FileReader fr = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
while ((str2 = localBufferedReader.readLine()) != null) {
if (index==2) {
break;
}
buffer.append(str2+";");
index++;
}
} catch (IOException e) {
}
return buffer.toString().replaceAll(" ","");
}
/**获取mac地址*/
public static String getWifiMac(Context ctx) {
WifiManager wifi = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String str = info.getMacAddress();
if (str == null) str = "";
return str;
}
}