2012-09-11 88 views
3

基于How to get the name of the application in android?如何以编程方式获取APK的应用程序名称(未安装)

我有这个片段。 `andPath |是APK的位置。

PackageInfo info = getPackageManager().getPackageArchiveInfo(andPath, 0); 
ApplicationInfo appinfo = info.applicationInfo; 
String packageName = getPackageManager().getApplicationLabel(appinfo).toString(); 

PackageManager pm=getPackageManager(); 
ApplicationInfo ai; 
try { 
    ai = pm.getApplicationInfo(packageName, 0); 
} catch (final NameNotFoundException e) { 
    ai = null; 
} 

final String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)"); 

applicationName返回包名称。

CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName,PackageManager.GET_META_DATA)); 

c返回我null

有没有人知道我在这里失踪?

回答

3

,如果你在这里有一个问题,我发布完整的代码来获取应用程序的名称

其回报ApplicationInfo

public List<ApplicationInfo> getApplicationList(Context con){ 
     PackageManager p = con.getPackageManager(); 
     List<ApplicationInfo> info = p.getInstalledApplications(0); 
     return info; 
    } 

返回应用程序名称

public String applicationLabel(Context con,ApplicationInfo info){ 
     PackageManager p = con.getPackageManager(); 
     String label = p.getApplicationLabel(info).toString(); 
     return label; 
    } 

上你的onCreate函数粘贴下面的代码

List<ApplicationInfo> info = new ArrayList<ApplicationInfo>(); 

     info = list.getApplicationList(this); 
     LinearLayout layout = (LinearLayout)findViewById(R.id.content); 
     layout.setOrientation(1); 
     int size = info.size(); 
     Log.d("size",String.valueOf(size)); 
     for(int i=0;i<size;i++){ 
      Log.d("Val of I",String.valueOf(i)); 
      String appname = list.applicationLabel(this,info.get(i)).toString(); 
      Log.d("AppName",appname); 
      TextView tv = new TextView(this); 
      tv.setText(appname); 
      layout.addView(tv); 
     } 

    } 
+0

list是包含getApplicationList和applicationLabel函数 – Bucks

+0

的类的对象,但是这是基于已安装的应用程序权限获取应用程序名称?是否有可能根据未安装的APK获取应用程序名称?感谢您的答复btw! – fwoop

+0

未安装的应用程序名称意味着您想获取sd卡中的apks列表? – Bucks

0
public String applicationLabel (ApplicationInfo info){ 
    PackageManager p = con.getPackageManager(); 
    return p.getApplicationLabel(info).toString(); 
} 

我希望你有应用程序信息传递应用程序信息到这个函数它会给应用程序名称。

+0

我试过了,但它给了我包名。我的应用程序信息基于未安装的APK – fwoop

+0

@Bucks:抱歉,什么是'con'?语境? –

+1

@ LuisA.Florit,con必须是上下文。 –

0
String title = getResources().getString(R.string.app_name); 
4

这是如何从not yet installed APK文件获取应用程序标签:

public static String getAppLabel(PackageManager pm, String pathToApk) { 
    PackageInfo packageInfo = pm.getPackageArchiveInfo(pathToApk, 0); 

    if (Build.VERSION.SDK_INT >= 8) { 
     // those two lines do the magic: 
     packageInfo.applicationInfo.sourceDir = pathToApk; 
     packageInfo.applicationInfo.publicSourceDir = pathToApk; 
    } 

    CharSequence label = pm.getApplicationLabel(packageInfo.applicationInfo); 
    return label != null ? label.toString() : null; 
} 

无需修补applicationInfo之前的SDK 8更多细节请this issue

+0

我认为这个答案应该被接受为正确答案,因为它完全适合问题的答案。 –

相关问题