2011-09-08 48 views
0

比較應用程序的名字,我有以下示例代碼...如何獲得和Android的

public class ImageAdapter extends BaseAdapter { 

     public static String PACKAGE_NAME; 
     private Context mContext; 

    public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 

      return helloThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView; 
      if (convertView == null) { 
       imageView = new ImageView(mContext); 
       imageView.setLayoutParams(new GridView.LayoutParams(100, 100)); 
       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       imageView.setPadding(8, 8, 8, 8); 
      } else { 
       imageView = (ImageView) convertView; 
      } 

      PACKAGE_NAME = (String) mContext.getApplicationContext().getPackageName(); 

      //How to compare this with Class Name 

      if(PACKAGE_NAME=="HelloWorld.class"){ 
       imageView.setImageResource(helloThumbIds[position]); 

      }else if(PACKAGE_NAME=="HelloWhere.class"){ 
       imageView.setImageResource(hellowhereThumbIds[position]); 
      } 
      return imageView; 
     } 

     Integer[] helloThumbIds = { 
       R.drawable.1, 
       R.drawable.2}; 
     Integer[] hellowhereThumbIds = { 
       R.drawable.3, 
       R.drawable.4}; 
    } 

回答

0

切勿==比較字符串。 這是基本的Java實踐。

使用「等於」方法比較字符串,例如:

if (PACKAGE_NAME.equals("HelloWorld.class")

當然,「HelloWorld.class的」不是包的名字,所以你的代碼將無法正常工作。

編輯:我不太確定你想做什麼。你正在閱讀你自己的應用程序上下文,你應該知道你自己的應用程序的包名,不是嗎? 而且你不應該將上下文保存到私有變量中。

1

你想獲取安裝的應用程序的名稱,並相互比較?

這裏是你如何可以獲取安裝的應用程序名稱:

ArrayList<PackageInfo> res = new ArrayList<PackageInfo>(); 
PackageManager pm = ctx.getPackageManager(); 
List<PackageInfo> packs = pm.getInstalledPackages(0); 

for(int i=0;i<packs.size();i++) { 
    PackageInfo p = packs.get(i); 
    String description = (String) p.applicationInfo.loadDescription(pm); 
    String label= p.applicationInfo.loadLabel(pm).toString(); 
    String packageName = p.packageName; 
    String versionName = p.versionName; 
    String versionCode = p.versionCode; 
    String icon = p.applicationInfo.loadIcon(pm); 
//Continue to extract other info about the app... 
} 

注:此權限添加到清單文件:

<uses-permission android:name="android.permission.GET_TASKS" />