如何在奥利奥安装应用程序?

时间:2018-02-12 15:02:53

标签: android android-8.0-oreo android-8.1-oreo

我正在开发标准的“干净大师”应用程序。

如果api级别低于26,我的应用程序可以正常运行。

我需要在手机上显示应用总大小,因此用户可以决定是否卸载。

  private void getPackageSizeInfo(Context context, final String packageName) {
    try {
        PackageManager packageManager = context.getPackageManager();
        Method getPackageSizeInfo = packageManager.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class);

        getPackageSizeInfo.invoke(packageManager, packageName, new IPackageStatsObserver.Stub() {
            public void onGetStatsCompleted(PackageStats packageStats, boolean succeeded) throws RemoteException {
                long totalCacheSize = packageStats.cacheSize + packageStats.externalCacheSize;
                long totalDataSize = packageStats.dataSize + packageStats.externalDataSize;
                long totalCodeSize = packageStats.codeSize + packageStats.externalCodeSize;
                long totalSize = totalDataSize + totalCodeSize;

                Log.i("appSize", "Total Size:" +packageName + "   " + NetworkHelper.humanReadableByteCount(totalSize) );
                Log.i("appSize", "App Size:" + packageName + "   " +NetworkHelper.humanReadableByteCount(totalCodeSize) );
                Log.i("appSize", "Data Size:" +packageName + "   " +NetworkHelper.humanReadableByteCount(totalDataSize)  );
                Log.i("appSize", "Cache Size:" +packageName + "   " +NetworkHelper.humanReadableByteCount(totalCacheSize)  );
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

正如我所说的,这段代码在api 26下完美运行。(添加了helpl ofc)

我知道这可能是因为干净的高级清洁部件适用于api 26.

Caused by: java.lang.UnsupportedOperationException: Shame on you for calling the hidden API getPackageSizeInfoAsUser(). Shame!

我收到此错误。我已经阅读了有关该主题的所有主题。

我获得了<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" /> 的许可。获得使用权等。

注意:我不想获得apk尺寸(我已经拥有),只想要总的应用尺寸。

0 个答案:

没有答案