나는 당신이 가고자하는 곳을 볼 수있다. 그러나 나는 당신이 약간의 접근 방식을 재고 할 필요가 있다고 생각한다. 사용자는 항상 원하는대로 설치 및 제거 할 수 있어야합니다. 하지만 앱을 처음 설치 한 시점을 확인하기 위해 앱에 수표를 넣을 수 있습니다.
PackageInfo info = pm.getPackageInfo(packageName, 0);
long firstInstallTime = info.firstInstallTime;
이이 타임 스탬프는 다음 설치 제거하고 다시 설치 수의 번호로 변경되지 않습니다 응용 프로그램이 처음 firstInstallTime
에 설치 된 시간을 저장합니다.
PackageInfo 클래스는 기기에서 앱에 대한 유용한 정보를 제공하며 알만한 가치가 있습니다.
애플 리케이션 소스 디렉토리는 당신이 얻을 수 있습니다 (응용 프로그램은 가장 최근에 설치 한 즉) 마지막으로 수정 된 때 타임 스탬프이 비교할 수
:
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(packageName, 0);
long mostRecentInstallTime = new File(appInfo.sourceDir).lastModified();
나는 또한 사용했습니다 이 접근 방식은 사용자에게 1 주일간 전체 기능의 앱 평가판을 제공하여보다 적은 "무료 모드"로 되돌리기 때문에 설치 제거 및 재설치를 통해 문제를 해결할 수 없습니다.
추가
: 귀하의 코멘트에 대한 응답으로
...
당신은 당신의 자신의 응용 프로그램 또는 당신이 후 설치된 앱에 대한 PackageInfo를 얻는 데 제한되지 않습니다. "장치 수명"에 설치된시기와 관계없이 현재 장치에있는 모든 응용 프로그램에 대해 PackageInfo를 가져올 수 있습니다. 코드의
이 약간 수정 된 버전은 here 장치에있는 모든 응용 프로그램에 대해 당신에게 firstInstallTime을 줄 것이다 발견
// Get PackageInfo for each app on the device
List<PackageInfo> packageInfoInstalledPackages = getPackageManager().getInstalledPackages(0);
// Now iterate through to get the info you need.
long[] firstInstallTimes = long[packageInfoInstalledPackages.size()];
for(int i=0;i<packageInfoInstalledPackages.size();i++) {
PackageInfo p = packageInfoInstalledPackages.get(i);
if (p.versionName != null) {
firstInstallTimes[i] = p.firstInstallTime;
}
}
당신은 또한 그래서 당신은 당신이 필요로하는 모든이 있어야 ApplicationInfo
를 얻을 수 있습니다.
첫째, 감사합니다! 이제는 현재 시스템에 설치된 앱 목록을 제공하지만 이전에 설치되었지만 현재는 제공되지 않는 앱을 찾는 방법이 있습니까? – patrickfdsouza