2010-10-26 5 views
18
PackageManager pm = this.getPackageManager(); 
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); 

List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses(); 

for(RunningAppProcessInfo process : runningAppProcesses) { 
    try { 
     ApplicationInfo ai = pm.getApplicationInfo(process.processName, PackageManager.GET_META_DATA); 
     Log.d(TAG, applicationInfo.name + ""); 
    } catch (NameNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

process.processName मान्य पैकेज नाम देता है लेकिन applicationInfo.name हमेशा रिक्त है रिक्त है।PackageManager के applicationInfo.name हमेशा

उत्तर

30

applicationInfo.loadLabel(packageManagerInstance) प्रयुक्त आवेदन नाम खोजने की कोशिश करें, लेकिन एक कारण है कि applicationInfo.name काम नहीं किया होना चाहिए। आप किसी भी है, तो

संपादित

applicationInfo.name एक Application उपवर्ग का नाम है।

+0

के समान ही धन्यवाद, यह चाल काम करती है। applicationInfo.name मेरे लिए काम नहीं करता है। –

+0

मेरे लिए भी applicationInfo.name काम नहीं करता –

+0

मुझे न तो! :-एक्स –

0

इस

Log.d(TAG, ai.processName + ""); 

या इस

Log.d(TAG, ai.packageName + ""); 
+0

काम करता है! लेकिन पैकेज का नाम देता है, न कि एप्लिकेशन का नाम। Process.processName –

8

कारण नाम शून्य है कि यह वास्तव में है ... शून्य।

एंड्रॉयड प्रकट प्रलेखन का संदर्भ लें:

एंड्रॉयड: एक आवेदन उपवर्ग के पूरी तरह से योग्य नाम नाम आवेदन के लिए कार्यान्वित किया। जब एप्लिकेशन प्रक्रिया शुरू हो जाती है, तो कक्षा को किसी भी एप्लिकेशन के घटकों से पहले तुरंत चालू किया जाता है।

सबक्लास वैकल्पिक है; अधिकांश एप्लिकेशन को एक की आवश्यकता नहीं होगी। उप-वर्ग की अनुपस्थिति में, Android बेस एप्लिकेशन कक्षा का उदाहरण उपयोग करता है।

आप जो चाहते हैं वह एप्लिकेशन का नाम है, जो एप्लिकेशन टैग के लेबल विशेषता में सेट है, और रागुनथ ने बताया कि कैसे प्राप्त किया जाए।

संबंधित मुद्दे