2

我的 Android 应用程序有没有办法检测用户手机上是否启用了侧载?用户已经在他们的手机上安装了我的应用程序。现在我想以编程方式测试用户是否启用了侧载,即用户是否更改了他们的设置以允许从非市场来源安装应用程序。如果有 API 来获取这些信息?是否有一个设置存储在某个地方,我可以以编程方式查询(无需用户交互)?

4

2 回答 2

2
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
@SuppressWarnings("deprecation")
public static boolean isSideloadingEnabled(Context ctx) {
    final ContentResolver cr = ctx.getContentResolver();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        //Pull from Secure settings for (API < 17)
        return Settings.Secure.getInt(cr, Settings.Secure.INSTALL_NON_MARKET_APPS, 0) == 1;
    } else {
        //Setting was moved to Global settings in (API >= 17)
        return Settings.Global.getInt(cr, Settings.Global.INSTALL_NON_MARKET_APPS, 0) == 1;
    }
}

INSTALL_NON_MARKET_APPS各州的 Javadoc :

软件包安装程序是否应允许安装从 Google Play 以外的来源下载的应用程序。1 = 允许从其他来源安装 0 = 只允许从 Google Play 安装

于 2014-01-30T19:38:17.633 回答
0

显然这是由INSTALL_NON_MARKET_APP设置提供的。请参阅链接了解如何在最新版本的 Android 上查询此内容。

有关也适用于旧版本 Android 的向后兼容查询方式,请参阅https://stackoverflow.com/a/17777053/781723

于 2014-01-30T19:39:32.730 回答