2011年3月27日日曜日

Androidでアプリのサイズを取得する方法

この投稿へのリンク
Androidのアプリのサイズを取得する方法をメモ。
IPackageStatsObserverで取得が可能なようです。
ただ残念ながら非公開APIらしく、標準では取得が出来ないようなのでちょっと工夫が必要。

IPackageStatsObserverを使用する方法。
参考サイト リンク1リンク2

IPackageStatsObserverを使えるようにする方法

  1. プロジェクトのsrcにandroid.content.pmのパッケージを作成する
  2. IPackageStatsObserver.aidlPackageStats.aidlの2つのAIDLファイルをコピーして先のパッケージへ追加する

アプリのサイズを取得する方法
  1. AndroidManifest.xmlへ<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>を追加する
  2. 以下のコードで取得が可能

Method getPackageSizeInfo = 
    packageManager.getClass().getMethod("getPackageSizeInfo", 
                                        String.class,
     IPackageStatsObserver.class);

getPackageSizeInfo.invoke(packageManager, info.packageName, new IPackageStatsObserver.Stub() {
    @Override
    public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) 
    throws RemoteException {
    
        Log.i("AppSize", "codeSize: " + pStats.codeSize);
    }
});