나는 어떤 방법을 시도하지만 성공하지는 않습니다. 도와주세요.android에서 앱 설치 시간을 얻는 방법
위의 API 레벨 9 (진저 브레드)과에서
28
A
답변
52
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo("app.package.name", 0);
String appFile = appInfo.sourceDir;
long installed = new File(appFile).lastModified(); //Epoch Time
47
은 시대 이후의 밀리 초를 들고 PackageInfo.firstInstallTime 필드있다 :
packageManager.getPackageInfo(packageName, 0).firstInstallTime;
나는 가능하다면 그것을 사용하고, 다시 가을에 다음과 같은 코드를 APK에 수정 시간 :
// return install time from package manager, or apk file modification time,
// or null if not found
public Date getInstallTime(
PackageManager packageManager, String packageName) {
return firstNonNull(
installTimeFromPackageManager(packageManager, packageName),
apkUpdateTime(packageManager, packageName));
}
private Date apkUpdateTime(
PackageManager packageManager, String packageName) {
try {
ApplicationInfo info = packageManager.getApplicationInfo(packageName, 0);
File apkFile = new File(info.sourceDir);
return apkFile.exists() ? new Date(apkFile.lastModified()) : null;
} catch (NameNotFoundException e) {
return null; // package not found
}
}
private Date installTimeFromPackageManager(
PackageManager packageManager, String packageName) {
// API level 9 and above have the "firstInstallTime" field.
// Check for it with reflection and return if present.
try {
PackageInfo info = packageManager.getPackageInfo(packageName, 0);
Field field = PackageInfo.class.getField("firstInstallTime");
long timestamp = field.getLong(info);
return new Date(timestamp);
} catch (NameNotFoundException e) {
return null; // package not found
} catch (IllegalAccessException e) {
} catch (NoSuchFieldException e) {
} catch (IllegalArgumentException e) {
} catch (SecurityException e) {
}
// field wasn't found
return null;
}
private Date firstNonNull(Date... dates) {
for (Date date : dates)
if (date != null)
return date;
return null;
}
10
PackageInfo.firstInstallTime 당신에게 "유닉스 시간"에서 설치 시간 (시간을 제공합니다 내가 n 시간은 "신기원", 즉 1 월 1 일 00:00:00:00 UTC입니다. 이 시간을 포맷하려면 java.util.Date 또는 java.text.DateFormat을 사용할 수 있습니다.
private static final String TAG = "MyActivity";
...
packageName = ...
...
try {
PackageInfo packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
Date installTime = new Date(packageInfo.firstInstallTime);
Log.d(TAG, "Installed: " + installTime.toString());
Date updateTime = new Date(packageInfo.lastUpdateTime);
Log.d(TAG, "Updated: " + updateTime.toString());
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
java.text.SimpleDateFormat으로 날짜 형식을 변경할 수도 있습니다.
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String installTime = dateFormat.format(new Date(packageInfo.firstInstallTime));
Log.d(TAG, "Installed: " + installTime);
String updateTime = dateFormat.format(new Date(packageInfo.lastUpdateTime));
Log.d(TAG, "Updated: " + updateTime);
관련 문제
- 1. Android에서 앱 설치 내역
- 2. android에서 DialogResult를 얻는 방법?
- 3. android에서 현재 위치를 얻는 방법
- 4. android에서 앱 목록을 동적으로로드하는 방법
- 5. jquery에서 시간을 얻는 방법 Timepicker
- 6. flex에서 서버 시간을 얻는 방법
- 7. 매초 서버 시간을 얻는 방법
- 8. DateTime에서 12 시간을 얻는 방법
- 9. iOS 프로그래밍에서 시간을 얻는 방법
- 10. android에서 Button의 너비를 얻는 방법
- 11. android에서 searchview의 이벤트를 얻는 방법
- 12. Android에서 언어 목록을 얻는 방법
- 13. android에서 로그 정보를 얻는 방법
- 14. android에서 프로세서 번호를 얻는 방법
- 15. Android에서 AnalogClock/DigitalClock에서 시간을 반환하는 방법
- 16. android에서 adobe AIR 앱 내의 SMS를받는 방법
- 17. Android에서 앱 아이콘 받기
- 18. Android에서 동적 앱 만들기
- 19. Android에서 앱 제거 방지하기
- 20. .net 앱 설치 프로그램 만들기
- 21. C#에서 총 프로세서 시간을 얻는 방법?
- 22. 웹 서비스가 호출되는 시간을 얻는 방법
- 23. DataTime.Clock을 사용하여 하스켈에서 시스템 시간을 얻는 방법?
- 24. memcached에서 특정 항목의 만료 시간을 얻는 방법
- 25. 계산 된 열의 시간을 얻는 방법
- 26. SQL 프로세스의 시작 시간을 얻는 방법?
- 27. Visual C++ : CPU 시간을 얻는 방법?
- 28. 폴더 생성 시간을 얻는 방법 (밀리 초)?
- 29. Yahoo Pipes에서 현재 날짜와 시간을 얻는 방법?
- 30. 내 웹 사이트의 정확한 시간을 얻는 방법?
당신이 말하는 단어를 몇백 개 추가해도 될까요? – CommonsWare
그는 앱이 설치되었을 때 알고 싶어한다고 생각합니다. – Macarse
나에게 말해주는 List 응용 프로그램을 설치하는 방법, 사용자, nou 시스템에 의해 설치됩니다. – jezz