Ada cara yang lebih mudah daripada jawaban lain yang tidak mengharuskan Anda menamai sumber daya secara eksplisit atau mengkhawatirkan pengecualian dengan nama paket. Ini juga berfungsi jika Anda telah menggunakan string secara langsung, bukan sumber daya.
Kerjakan saja:
public static String getApplicationName(Context context) {
ApplicationInfo applicationInfo = context.getApplicationInfo();
int stringId = applicationInfo.labelRes;
return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}
Semoga ini membantu.
Sunting
Mengingat komentar dari Snicolas, saya telah memodifikasi yang di atas sehingga tidak mencoba untuk menyelesaikan id jika itu 0. Sebagai gantinya digunakan, nonLocalizedLabelsebagai backoff. Tidak perlu membungkus dalam coba / tangkap.
android:name. Jika Anda melakukan hardcode string, maka gagal.