पैकेज नाम से आवेदन नाम प्राप्त करें


84

मैं एप्लिकेशन पैकेज नाम से एप्लिकेशन नाम प्राप्त करना चाहता हूं। कोई मुझे दिखाओ कि मैं यह कैसे प्राप्त कर सकता हूं।

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());
        }
    }
}

जवाबों:


196

आप 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>उसके प्रकट होने के टैग के रूप में परिभाषित करेगा ।


1
यह एकदम सही है। एक्सियन के लिए धन्यवाद, घंटे के लिए देख रहे हैं। : D
28 बजे drulabs

3
इसकी वापसी मुझे हर समय अज्ञात रहती है, जो कि मेरे नाम का पैकेज नाम है, सिर्फ पैकेज के नाम से जानना चाहता हूँ
nida

वैश्विक रिसीवर में इसका इस्तेमाल करने पर यह काम नहीं कर रहा है
Ziv Kesten

PACKAGE_REMOVED के बाद आपको किसी पैकेज का ApplicationInfo नहीं मिल सकता है।
196 में जॉन 61590

एकदम सही .. बस कॉपी पेस्ट .. काम हो जाता है। धन्यवाद।
ABHIMANGAL MS

37

इसे इस्तेमाल करे

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


15
 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 "";
    }
}

3

ऐसा लगता है कि आप इसके बाद जोड़े गए नए पैकेज की घटना को प्राप्त करने में सक्षम हैं, इसकी बहुत ही सरल अवधारणा उस पैकेज के बारे में सभी प्रासंगिक जानकारी प्राप्त करने के लिए है, जैसे कि एक ऐसी जानकारी एप्लिकेशन का नाम है, इसलिए यहां अवधारणा है

-> आपके डिवाइस पैकेज मैनेजर में इससे संबंधित सभी जानकारी होती है, इसलिए केवल एक वस्तु बनाएं, जिससे आपको पैकेज नाम से संबंधित सभी जानकारी मिल जाएगी।

-> आपको यह भी याद रखना चाहिए कि आशय आपको "पैकेज: real_package_name" प्रदान करता है, इसलिए सबसे पहले आपको वास्तविक नाम पहले स्पिलिंग (मैंने इस्तेमाल किया) या स्ट्रिंग के किसी अन्य सरल कार्यान्वयन द्वारा प्राप्त करना होगा

-> यहाँ कोड उम्मीद है कि आपको वो मिलेगा जो मैं चाहता हूँ कि मैं इस बारे में भी जानकारी दूं कि आप ऐप का नाम, ऐप आइकन, ऐप संस्करण, ऐप संस्करण कोड आदि कैसे प्राप्त कर सकते हैं ....।

    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());
             }
         }
      }
   }    
}

लेकिन एप्लिकेशन अनइंस्टॉल के समय आप केवल पैकेज नाम प्राप्त कर सकते हैं क्योंकि अन इंस्टॉलेशन पर अन्य सभी जानकारी सिस्टम द्वारा हटा दी जाती है।


आशय .getData ()। toString () जाने का तरीका नहीं है, आशय में डेटा संरचित है।
ओलाफ अचथोवेन

-2
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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.