contextからactivityのクラス名を取得しようとしていたのですが、なかなかWeb上になくハマったのでメモしておきます。
PackageInfo pInfo; String className = ""; try { pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), context.getPackageManager().GET_ACTIVITIES); className = pInfo.activities[0].name; Log.d(TAG, className); } catch (NameNotFoundException e) { e.printStackTrace(); }
上記のようにやると取得できます。
解説
context.getApplicationInfo().className
では、取れないということです。
Manifestにおいて、<activity>は<application>中に複数書くことができるので、リスト構造になっているという点がキモです。
getPackageInfo(String packageName, int flag)
このgetPackageInfo()を利用すると、パッケージ情報が取得できます。
ここで、flagの設定が必要で、GET_ACTIVITIESを立てると、activityを取得することができるようになります。
あとは、activityフィールドから取得することで、classNameがめでたく取得することができるようになります。