如何获得已安装应用程序的大小?

时间:2014-01-10 06:27:26

标签: android size apk filesize

我正在尝试计算已安装应用程序的大小。

我找到了答案here

我在某些设备上测试了它,除了三星Galaxy Note3(4.3)之外没有问题。

我收到此错误:java.lang.NoSuchMethodException:getPackageSizeInfo()

我想知道是否有其他方法可以获得已安装应用的大小?

3 个答案:

答案 0 :(得分:3)

试试这个......

public static long getApkSize(Context context, String packageName)
        throws NameNotFoundException {
    return new File(context.getPackageManager().getApplicationInfo(
            packageName, 0).publicSourceDir).length();
}

答案 1 :(得分:0)

也许这个链接可以帮到你:

http://nsamteladze.blogspot.com/2012/10/get-apks-code-size-in-android.html

基本上他正在利用 reflection 的概念,这是一个强大的工具,但并不总是可取的。在这里阅读更多相关信息:What is reflection and why is it useful?如果它适合您,请使用它。

答案 2 :(得分:0)

您可以获取没有AIDL文件的应用大小 -----------> Kotlin语言

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    val intent = Intent(Intent.ACTION_MAIN)
    intent.addCategory(Intent.CATEGORY_LAUNCHER)  
        
    val list = packageManager.queryIntentActivities(intent,0)
            
    // Set adapter to LIST VIEW
    listView.adapter = getApps(list)
 }
       
 private fun getApps(List: MutableList<ResolveInfo>): List<AppData> {
            
     val list = ArrayList<AppData>()
      for (packageInfo in List) {
                      
         val packageName = packageInfo.activityInfo.packageName
           // return size in form of Bytes(Long)             
    val size = File(packageManager.getApplicationInfo(packageName,0).publicSourceDir).length()
          
          val item = AppData(Size)
            list += item
      }
   return list
   }
}
 // Make Data Class
data class AppData(val size: Long)

记住要以字节为单位将其转换为MB