2012-06-22 3 views
0

현재 Android 시작 프로그램을 만들고 있으며 다른 일을 수행하는 방법에 대해 Stackoverflow에서 많은 시간을 보냈습니다. 그러나 나는 내 자신의 어플리케이션을 열어서 걸림돌을 때렸다. 내가 사용한 코드는이 주제에 대한 다른 질문들과 함께 결합되었습니다. 이제 설치된 앱 목록이 있지만 클릭하면 내 앱이 다시 열립니다. 잘못된 의도로 잘못된 의도를 사용하고 있지만 문제를 해결하는 방법을 모르겠습니다. 그래서 내 질문 : 선택한 응용 프로그램을 여는 더 좋은 방법은 무엇입니까? 아래는 사용 된 코드입니다. 참고 : 저는 코딩의 초보자입니다. 당신은 당신이 수행 한 멋진 코드 만 실수를 쓴내가 시도하는 방식으로 응용 프로그램을 시작할 수 있습니까?

PackageManager pm = this.getPackageManager(); 
Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 

List <String> myList = new ArrayList <String>(); 
ArrayList <ResolveInfo> list = (ArrayList <ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED); 
for (ResolveInfo rInfo: list) { 
    System.out.println("Installed Applications " + rInfo.activityInfo.applicationInfo.loadIcon(pm).toString() + rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()); 
    myList.add(rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()); 


} 

ListView lists = (ListView) findViewById(R.id.content); 
ArrayAdapter <String> aa = new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, myList); 
lists.setAdapter(aa); 

lists.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView <? > parent, View view, int position, long id) { 
     Intent i = new Intent("android.intent.action.MAIN"); 
     i.addCategory("android.intent.category.LAUNCHER"); 
     PackageManager pm = getPackageManager(); 
     i = pm.getLaunchIntentForPackage(getPackageName()); 

     startActivity(i); 
    } 
}); 
+1

'getPackageName()'메소드는 현재'Activity'의 패키지 이름을 반환하기 때문에'getLaunchIntentForPackage (getPackageName())'는 단순히 자신의 응용 프로그램을 다시 시작합니다. 다른 앱을 열거 한 후에 * 패키지 이름을 가져와 클릭 한 목록 항목에서 가져와야합니다. – Squonk

답변

3

당신은 완벽하게 모든 응용 프로그램 이름을 표시하고 있지만 온 클릭 응용 프로그램 이름의 당신은 위의 코드를 실행하기 때문에 모든 노력을 낭비 여기

i = pm.getLaunchIntentForPackage(getPackageName()); 
startActivity(i); 

입니다 하지만 getPackageName()은 현재 활동 패키지 이름을 리턴합니다. 클릭 한 항목에 관계없이 응용 프로그램이 다시 시작됩니다.

그래서 그냥 변화에

i = pm.getLaunchIntentForPackage(getPackageName()); 

i = pm.getLaunchIntentForPackage(list.get(position).activityInfo.packageName); 

그것은 당신이 버튼으로 클릭 한 응용 프로그램을 시작합니다!

+0

고마워요! @Vipul ... – KDev

+0

당신은 환영합니다 :) –

관련 문제