考虑到应用程序的包ID,如何判断它是否来自未知来源(即用户在安装APK之前必须启用“允许不受信任的来源”)?
答案 0 :(得分:2)
Android:如何确定应用是否来自未知来源?
我认为没有办法确定.apk文件是否来自未知来源。 Android API无法提供实现目标的解决方案。
所有可以做的是确定应用程序是否为系统:
if ((info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
// its system application
}
else {
// its non-system application
// here you can assume that application can be from unknown source
}
存在一种可能的解决方案,但我认为它不是非常有效和可靠。想法是在Google Play上制作经典的 HTTPGet 请求,例如:
https://play.google.com/store/apps/details?id=com.example.foo
然后检查它返回的内容。如果返回头部包含这样的内容:
<title>Not Found</title>
在这里,您可以假设应用程序来自未知来源,但这种方式不正确且可靠,因为:
请求的伪代码可能如下所示:
String url = Const.MARKET + packageName;
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = null;
...
HttpGet request = new HttpGet(url);
response = httpClient.execute(request);
HttpEntity content = response.getEntity();
String content = EntityUtils.toString(content);
if (content != null && content.contains("<title>Not Found</title>")) {
// application is from unknown source
}
注意:您可以从PackageManager中检索的应用程序包。
答案 1 :(得分:0)
没有办法做出这个决定(我至少知道)。此设置的区别在于.APK是从Google Play下载的(受信任)或通过其他应用程序安装或从网上下载(不受信任)。
答案 2 :(得分:0)
据我所知,这取决于该应用的创建者是否已使用Google Play开发者密钥与APK签约。您无法从包名称中检索它。