Получить имя приложения из имени пакета
Я хочу получить имя приложения из имени пакета приложения. Кто-нибудь, пожалуйста, покажите мне, как я могу это получить.
public class AppInstalledListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if(action.equals("android.intent.action.PACKAGE_ADDED")){
Logger.debug("DATA:"+intent.getData().toString());
}
if(action.equals("android.intent.action.PACKAGE_REMOVED")){
Logger.debug("DATA:"+intent.getData().toString());
}
if(action.equals("android.intent.action.PACKAGE_REPLACED")){
Logger.debug("DATA:"+intent.getData().toString());
}
}
}
Ответы
Ответ 1
Вы можете использовать класс PackageManager
для получения ApplicationInfo
:
final PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai;
try {
ai = pm.getApplicationInfo( this.getPackageName(), 0);
} catch (final NameNotFoundException e) {
ai = null;
}
final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");
Это вернет имя приложения, как определено в теге <application>
его манифеста.
Ответ 2
Попробуйте это
final String packageName = "my.application.package"
PackageManager packageManager= getApplicationContext().getPackageManager();
String appName = (String) packageManager.getApplicationLabel(packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA));
и замените packageName
на полное имя вашего пакета.
вы можете получить имя_пакета, используя mContext.getPackageName()
, где mContext = yourActivityName.this
для Activity и getActivity() для фрагмента.
Ответ 3
Кажется, что вы можете получить событие нового пакета, добавленного после этого, его очень простая концепция, чтобы получить всю релевантную информацию об этом пакете, такую как одна такая информация, это имя приложения, так что вот концепция
- > Менеджер пакетов вашего устройства имеет всю информацию, связанную с ним, поэтому просто создайте объект, который предоставит вам всю информацию, связанную с именем пакета.
- > Вы также должны помнить, что намерение дает вам "package: real_package_name", поэтому сначала вы должны получить реальное имя сначала путем разлива (я использовал) или любой другой простой реализацией String
- > Вот код, надеюсь, вы получите то, что хотите. Я также предоставляю информацию о том, как вы можете получить имя приложения, значок приложения, версию приложения, код версии приложения и т.д.
public class NewAppReciver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.PACKAGE_ADDED")){
String[] a=intent.getData().toString().split(":");
String packageName=a[a.length-1];
List<PackageInfo> packageInfoList = context.getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packageInfoList.size(); i++) {
PackageInfo packageInfo = packageInfoList.get(i);
if(packageInfo.packageName.equals(packageName)){
String appName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();
String appVersion = packageInfo.versionName;
int appVerCode = packageInfo.versionCode;
Drawable app_icon = packageInfo.applicationInfo.loadIcon(context.getPackageManager());
}
}
}
}
}
Но на момент удаления приложения вы можете получить только имя пакета, как при установке Un, вся другая информация удаляется системой.
Ответ 4
public static String getAppNameFromPkgName(Context context, String Packagename) {
try {
PackageManager packageManager = context.getPackageManager();
ApplicationInfo info = packageManager.getApplicationInfo(Packagename, PackageManager.GET_META_DATA);
String appName = (String) packageManager.getApplicationLabel(info);
return appName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
Ответ 5
PackageManager pm = getPackageManager();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.MAIN");
filter.addCategory("android.intent.category.HOME");
filter.addCategory("android.intent.category.DEFAULT");
Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(), TestReplaceHomeAppActivity.class.getName());
ComponentName[] components = new ComponentName[] {new ComponentName("com.android.launcher", "com.android.launcher.Launcher"), component};
pm.clearPackagePreferredActivities("com.android.launcher");
pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, components, component);