Я хочу получить имя приложения из имени пакета приложения. Кто-нибудь, пожалуйста, покажите мне, как я могу это получить.
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());
}
}
}
Попробуй это
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()
wheremContext = yourActivityName.this
для Activity и getActivity () для фрагмента.источник
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 ""; } }
источник
Кажется, что вы можете получить событие о добавлении нового пакета, после чего это очень простая концепция, чтобы получить всю соответствующую информацию об этом пакете, например, одна такая информация - это имя приложения, так что вот концепция
-> в диспетчере пакетов вашего устройства есть вся информация, связанная с ним, поэтому просто создайте объект, который предоставит вам всю информацию, связанную с именем пакета.
-> Вы также должны помнить, что намерение дает вам "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 вся остальная информация удаляется системой.
источник
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);
источник