我正在试图弄清楚如何获得已安装应用的大小.
什么已经失败:
- new File('/data/app/some.apk')报告不正确的大小
- PackageManager.getPackageSizeInfo(String packageName, IPackageStatsObserver observer)- @hide并依赖于一些模糊IPackageStatsObserver的结果,所以我不能通过反射调用它.
我的应用程序需要具有使用权限访问权限才能获得有关用户手机上当前正在运行的应用程序的信息.我可以使用以下代码在以下链接的帮助下成功实现它.
这是我的工作代码
public void showDialog()
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
@SuppressWarnings("WrongConstant")
UsageStatsManager usm = (UsageStatsManager) getSystemService("usagestats");
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,
time - 1000 * 1000, time);
if (appList.size()==0)
{
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("Usage Access")
.setMessage("App will not run without usage access permissions.")
.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void onClick(DialogInterface dialog, int which) {
// continue with delete
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
// intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$SecuritySettingsActivity"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent,0);
}
}) …Run Code Online (Sandbox Code Playgroud)