Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何知道APK文件是否比已安装的文件更新?_Android_Apk_Android Applicationinfo - Fatal编程技术网

Android 如何知道APK文件是否比已安装的文件更新?

Android 如何知道APK文件是否比已安装的文件更新?,android,apk,android-applicationinfo,Android,Apk,Android Applicationinfo,我正在制作一个应用程序,以便从我自己的主页进行更新。我做了更新程序,效果很好 现在,我只想在页面上的APK比安装的更新时更新。我所说的更新,是指安装日期更新,或者APK的大小不同。我总是忘记更新版本名 因此:如何检索已安装APK的安装日期、已安装APK的文件日期或APK的大小(/data/app dir需要root访问权限,我不希望我的用户需要这些权限) 我知道ApplicationInfo和PackageManager,但在他们的文档中没有找到我需要的信息 谢谢! L.我想这就是你要找的 仅供

我正在制作一个应用程序,以便从我自己的主页进行更新。我做了更新程序,效果很好

现在,我只想在页面上的APK比安装的更新时更新。我所说的更新,是指安装日期更新,或者APK的大小不同。我总是忘记更新版本名

因此:如何检索已安装APK的安装日期、已安装APK的文件日期或APK的大小(/data/app dir需要root访问权限,我不希望我的用户需要这些权限)

我知道ApplicationInfo和PackageManager,但在他们的文档中没有找到我需要的信息

谢谢! L.

我想这就是你要找的

仅供参考,您可能应该使用这似乎是一种适得其反的做法,以尽量不必记住升级版本。最终,您的.apk的安装日期和大小永远不会确定您的应用程序是新的还是旧的,因为如果您删除代码,.apk的大小可能会缩小,而且有人可能拥有更旧的版本,但在您所寻找的最短日期之后安装

我建议使用版本代码而不是版本名称来确定应用程序是否较新,因为版本名称可以是任意字符串,但版本代码是简单的整数比较

我想这就是你要找的

仅供参考,您可能应该使用这似乎是一种适得其反的做法,以尽量不必记住升级版本。最终,您的.apk的安装日期和大小永远不会确定您的应用程序是新的还是旧的,因为如果您删除代码,.apk的大小可能会缩小,而且有人可能拥有更旧的版本,但在您所寻找的最短日期之后安装


我建议使用版本代码而不是版本名称来确定应用程序是否较新,因为版本名称可以是任意字符串,但版本代码是简单的整数比较

自己找出答案。如有兴趣,请参阅下文

public long appinfo(String pkg){
    PackageManager p = context.getPackageManager();
    long labeldate = 0;
    try {
        PackageInfo label = p.getPackageInfo(pkg, 0);
        labeldate = label.lastUpdateTime;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return labeldate;
}

我自己找出答案。如有兴趣,请参阅下文

public long appinfo(String pkg){
    PackageManager p = context.getPackageManager();
    long labeldate = 0;
    try {
        PackageInfo label = p.getPackageInfo(pkg, 0);
        labeldate = label.lastUpdateTime;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return labeldate;
}

版本名?或者你是说数字,对吗?关键是数字。。。只是别忘了更新它。。。DUH@AndersMetnik:也许我不清楚?我不想使用versionName(是的,它是'versionName',因为它必须写入清单文件)。版本名?或者你是说数字,对吗?关键是数字。。。只是别忘了更新它。。。DUH@AndersMetnik:也许我不清楚?我不想使用versionName(是的,它是'versionName',因为它必须写入清单文件)。谢谢,我已经找到了下面的方法(忘记按“发送”)。版本控制的一个问题是,您需要检索APK来获取它,而获取修改时间/大小是简单而小的http查询。在最坏的情况下,用户将安装两次相同的apk。无论如何,我更新了versionCode,但是我现在每天发布几个版本,所以有一半的时间我忘记了。现在还不实用。。。谢谢你的建议!谢谢,我已经找到了下面的方法(忘记按“发送”)。版本控制的一个问题是,您需要检索APK来获取它,而获取修改时间/大小是简单而小的http查询。在最坏的情况下,用户将安装两次相同的apk。无论如何,我更新了versionCode,但是我现在每天发布几个版本,所以有一半的时间我忘记了。现在还不实用。。。谢谢你的建议!