目标
检测android手机常用应用时,可以检测应用在指定位置的文件夹属性,来做辅助判断设备的状态。
代码
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
public class Test {
public static void getFileTime() {
List<String> apps = Arrays.asList(
"com.tencent.mm",
"com.tencent.mobileqq",
"com.eg.android.AlipayGphone",
"com.taobao.taobao",
"com.ss.android.ugc.aweme",
"com.xunmeng.pinduoduo",
"com.baidu.searchbox",
"com.autonavi.minimap",
"com.tencent.mtt",
"com.tencent.qqlive",
"com.jingdong.app.mall",
"com.sankuai.meituan",
"cn.wps.moffice_eng",
"com.qiyi.video",
"com.sina.weibo",
"com.smile.gifmaker",
"com.baidu.BaiduMap",
"com.kugou.android",
"com.tmri.app.main",
"com.youku.phone",
"com.ss.android.article.news",
"com.tencent.android.qqdownloader",
"com.snda.wifilocating",
"com.tencent.qqmusic",
"com.wuba",
"com.alibaba.android.rimet",
"com.xingin.xhs",
"com.tencent.news",
"tv.danmaku.bili",
"com.kuaishou.nebula",
"com.UCMobile",
"com.chinamworld.main",
"co m.ximalaya.ting.android",
"com.ss.android.ugc.aweme.lite",
"com.baidu.netdisk",
"com.tencent.tmgp.sgame",
"com.netease.cloudmusic",
"com.android.bankabc",
"com.achievo.vipshop",
"com.tencent. androidqqmail",
"ctrip.android.view",
"com.icbc",
"com.android.email",
"com.taobao.idlefish",
"me.ele",
"com.lemon.lv",
"com.tencent.karaoke",
"com.taobao.litetao",
"com.MobileTicket",
"com.zhihu.android"
);
JSONObject appJSON = new JSONObject();
for (String pkg : apps) {
String path = "/storage/emulated/0/Android/data/" + pkg;
File file = new File(path);
if (file.exists()) {
BasicFileAttributes attr = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
try {
attr = Files.readAttributes(Paths.get(file.getAbsolutePath()), BasicFileAttributes.class);
} catch (IOException exception) {
exception.printStackTrace();
continue;
}
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
FileTime createdAt = attr.creationTime();
long creationTime = 0L;
if (createdAt != null) {
creationTime = createdAt.toMillis();
}
FileTime lastAccessAt = attr.lastAccessTime();
long lastAccessTime = 0l;
if (lastAccessAt != null) {
lastAccessTime = lastAccessAt.toMillis();
}
FileTime lastModifiedAt = attr.lastModifiedTime();
long lastModifiedTime = 0L;
if (lastModifiedAt != null) {
lastModifiedTime = lastModifiedAt.toMillis();
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("creationTime", creationTime);
jsonObject.put("lastAccessTime", lastAccessTime);
jsonObject.put("lastModifiedTime", lastModifiedTime);
appJSON.put(pkg, jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
System.out.println("key:" + appJSON.toString());
}
}