2011-09-08 4 views
0

에서 응용 프로그램 이름을 비교하는어떻게 ... 내가 샘플 코드 아래 가지고 얻을 안드로이드

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" /> 
관련 문제