2014-07-16 18 views
0

我希望做一個小的應用程序,將所有安裝的應用程序進入一個微調,然後給你太多選擇一個過於獲得UID的選項。不幸的是,我無法找到有關如何使用所有安裝的應用程序填充任何微調指南(如你看到的代碼缺少spinner列出所有安裝的應用程序,並把它們放在一個旋轉

enter code here 

import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.ApplicationInfo; 
import android.content.pm.PackageManager; 
import android.content.pm.ResolveInfo; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 


public class MainActivity extends Activity { 
public static String TAG="activity"; 
private Spinner spinner; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    additemtospinner(); 
    addListenerOnSpinnerItemSelection(); 
} 

public void additemtospinner() 
{ 
      spinner = (Spinner)findViewById(R.id.spinner1); 
      List<String> list = new ArrayList<String>(); 
      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, list); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(dataAdapter); 
} 
public void addListenerOnSpinnerItemSelection() { 
    spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener()); 
    } 
public class CustomOnItemSelectedListener implements OnItemSelectedListener { 
    public void onItemSelected(AdapterView<?> parent, View arg1, 
      int app_pos, long app_id) { 
    // TODO Auto-generated method stub 
      int UID; 
      String selectapp=parent.getItemAtPosition(app_pos).toString(); 
    final PackageManager pm = getPackageManager(); 
      List<ApplicationInfo> packages = pm.getInstalledApplications(
      PackageManager.GET_META_DATA); 
    for (ApplicationInfo packageInfo : packages) { 
     if(packageInfo.packageName.equals(selectapp)){ 
      UID = packageInfo.uid; 
      break; 
     } 

    } 

} 
    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 
     // TODO Auto-generated method stub 

    } 
} 

}

回答

1

here一個完整的教程來填充微調。

你不能在一個微調添加ApplicationInfo,你需要使用一個adpater這一點。但教程可以比我更好地解釋這一點;)。

例如與ArrayAdpater。您需要創建一個List<String>

List<String> list = new ArrayList<String>(); 
    list.add("list 1"); 
    list.add("list 2"); 
    list.add("list 3"); 

後,您需要與此列表創建ArrayAdpater

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_spinner_item, list); 
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

最終將適配器添加到Spinner,它將被填充。

spinner.setAdapter(dataAdapter); 

編輯

你的代碼是不正確的,你創建一個列表,但空。

List<String> list = new ArrayList<String>(); 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_spinner_item, list); 

如果你的列表是空的微調太:)

嘗試類似的東西:

List<String> list = new ArrayList<String>(); 
PackageManager pm = getPackageManager(); 
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); 
for (ApplicationInfo packageInfo : packages) { 
    list.add(packageInfo.packageName) 
} 
+1

如果教程網站消失,鏈接將被打破,信息將丟失。您能否總結本教程的內容並將該鏈接用作參考?感謝您的幫助。 – tashuhka

+2

當然:)。我現在就做。 – AlonsoFloo

+0

我跟着你的建議和教程,但不能仍然得到它的工作:(我更新了我的代碼 – AmazingHorse

相關問題