代码之家  ›  专栏  ›  技术社区  ›  Yevgeny Simkin

在sdk 26中从本地存储安装apk时出现问题

  •  0
  • Yevgeny Simkin  · 技术社区  · 6 年前

    我有一个方法可以进行应用程序更新,直到sdk版本26为止,它都能很好地工作。

    在26中,它打开活动,然后立即再次关闭它,没有任何(明显的)异常或警告被抛出。

    我没有看到任何关于新权限的文档或任何必要的文档。如果我把minsdkversion改为25,它会再次正常工作。

    希望知道26的变化以及如何解决。

    这是相关的代码段,但正如我所说,它并不是“坏掉的”——它只是在26分钟内悄无声息地失败了。

    if (Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.M) {
        Log.d(TAG, "Marshmallow or lower");
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
    }
    //if version 24 or above
    else {
        Log.d(TAG, "higher than Marshmallow");
    
        Uri uri = FileProvider.getUriForFile(mContext, mContext.getApplicationContext().getPackageName() + ".provider", file);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
    }
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    mContext.startActivity(intent);
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Vamsi    6 年前

    是否尝试将以下权限添加到清单?

    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    

    为了让PlayStore外部的应用程序安装更安全,Android Oreo做了一些改动。您可以通过以下链接获得更多信息:

    https://android-developers.googleblog.com/2017/08/making-it-safer-to-get-apps-on-android-o.html