2017-05-17 14 views
0

내 휴대 전화에서 사용 가능한 모든 실행 프로그램 목록을 가져 오려고합니다. 목록에서 특정 실행 프로그램을 클릭하면 기본 실행 프로그램으로 설정됩니다. 기본 휴대 전화 시작 프로그램 (삼성의 TouchWiz Home)을 클릭하면 앱이 안타깝게 중지되지만 이전에 설정된 홈 화면으로 돌아갑니다. 제 3 자 실행기를 열 수는 있지만 기본 홈 화면으로 설정되지 않고 홈 버튼을 클릭하면 이전 홈 화면으로 돌아갑니다. 코드는 다음과 같습니다. 안드로이드가 홈 화면을 시작하도록 선택하고 기본값으로 만드는 팝업 목록과 같이 이상적으로 작동 할 수있는 가능성이 있습니까? 도움이 필요하십니까? 고맙습니다!모든 실행 프로그램 목록에서 기본 홈 화면을 시작할 수 없습니다.

public class AppsListActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_apps_list); 
    loadApps(); 
    loadListView(); 
    addClickListener(); 
} 
private PackageManager manager; 
private List<AppDetail> apps; 
private void loadApps(){ 
    manager = getPackageManager(); 
    apps = new ArrayList<AppDetail>(); 
    Intent i = new Intent(Intent.ACTION_MAIN, null); 
    i.addCategory(Intent.CATEGORY_HOME); 

    List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0); 
    for(ResolveInfo ri:availableActivities){ 
     AppDetail app = new AppDetail(); 
     /* public class AppDetail { 
     CharSequence label; 
     CharSequence name; 
     Drawable icon;}*/ 
     app.label = ri.loadLabel(manager); 
     app.name = ri.activityInfo.packageName; 
     app.icon = ri.activityInfo.loadIcon(manager); 
     apps.add(app); 
    } 
} 
private ListView list; 
private void loadListView(){ 
    list = (ListView)findViewById(R.id.apps_list); 
    ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this,R.layout.list_item,apps) { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if(convertView == null){ 
       convertView = getLayoutInflater().inflate(R.layout.list_item, null); 
      } 

      ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon); 
      appIcon.setImageDrawable(apps.get(position).icon); 
      TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label); 
      appLabel.setText(apps.get(position).label); 
      TextView appName = (TextView)convertView.findViewById(R.id.item_app_name); 
      appName.setText(apps.get(position).name); 
      return convertView; 
     } 
    }; 
    list.setAdapter(adapter); } 

private void addClickListener() { 
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> av, View v, int pos,long id){ 
      Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString()); 
      ComponentName cn = i.getComponent(); 
      i.setClassName(cn.getPackageName(),cn.getClassName()); 
      i.setAction(Intent.ACTION_MAIN); 
      i.addCategory(Intent.CATEGORY_HOME); 
      i.addCategory(Intent.CATEGORY_DEFAULT); 
      AppsListActivity.this.startActivity(i); 

     } 
    }); 
} 
} 

답변

0

대신 Android의 기본 설정 앱을 사용해 보았습니다. 아래 코드를 사용하여 선택하도록 설정 앱을 직접 실행할 수 있습니다.

Intent i = new Intent(Settings.ACTION_HOME_SETTINGS); 
    startActivity(i);