表題の通りです。
いまさらな感じの内容なエントリです。。
アプリケーションのサイズをとりたかったのだけど
色々と迷った挙句なんとなくたどりついたのでメモしておきます。
単純にアプリのサイズを取りたい的な検索すると
「IPackageStatsObserver.aidl」 & 「PackageStats.aidl」を使って
getPackageSizeInfoでとれるよな回答があります。
うん、確かにとれるんですよ。
色々と取れたりするんですよ。
でも肝心のアプリのサイズってGooglePlayの表記と違うんですよねー。。
ちなみに取れるデータはアプリの詳細画面と同じデータですね。
詳細画面って何ぞやって方はこちらを参考にしてください。
ここらへんは作り手の考え方にもよると思いますが
なるべくインストール前に見ているGooglePlayのサイズに
合わせたほうがユーザー的にいいんじゃない?と個人的には思いました。。
んでもにょもにょとしてきました。はい。
色々いいましたが本題に戻ると
単純に
File (PackageInfo.applicationInfo.publicSourceDir).length()
で普通にファイルサイズとればいいんじゃない?
というところに落ち着きました。
これで取れる結果をいくつか見たところGooglePlayと同じサイズになってました。
*間違ってたらごめんなさい。。
簡単にソースかくとこんな感じでしょうか。
//--------------------------------------------------
public class Util {
//サイズを取得
protected static float isGetPackageSize(final PackageInfo info) {
Long length = new File (info.applicationInfo.publicSourceDir).length();
return Util.isConvertSize(length,100);
}
public static float isConvertSize_f(final long size) {
float f = (float)size;
if (f >= 1024.0F) {
//KBに
f = (float)(f / 1024.0D);
if (f >= 1024.0F) {
//MBに
f = (float)(f / 1024.0D);
if (f >= 1024.0F) {
//GBに
f = (float)(f / 1024.0D);
}
}
}
return f;
}
}
//--------------------------------------------------
あとは適当に四捨五入したりすればいいんじゃない。
って感じです。
色々探したりしたけど結果みると数行で終わる作業でした。。。。
最後に。。
「IPackageStatsObserver.aidl」 & 「PackageStats.aidl」に興味があれば
こちらのNikolaiさんのページが参考になるかと。
http://nsamteladze.blogspot.jp/2012/10/get-apks-code-size-in-android.html