2011-07-15 43 views
0

我正在開發一個當用戶選擇應打開應用程序的類。如果該應用程序未安裝,他們將點擊「查找」按鈕並安裝它。檢查第三方應用程序,如果沒有安裝,請打開

這裏是我迄今爲止

public class calc extends Activity { 
static final String MARKET_SEARCH_Q_PNAME_PROVIDER = "market://search?q=pname:com.packagename.package"; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.getpft); 
    setTitle("Install Marine PFT?"); 

    ((Button) findViewById(R.id.Ok)).setOnClickListener(new Openpft()); 
    ((Button) findViewById(R.id.FindIt)).setOnClickListener(new FindZxingOnclickListener()); 
} 

public class FindZxingOnclickListener implements OnClickListener { 
    public void onClick(View v) { 
     Intent marketLaunch = new Intent(Intent.ACTION_VIEW); 
     marketLaunch.setData(Uri.parse(MARKET_SEARCH_Q_PNAME_PROVIDER)); 
     startActivity(marketLaunch); 
    }} 




    }; 

到目前爲止頁面打開了,它正確地搜索應用程序。然而,現在,該應用程序已下載,我需要自動跳過這個屏幕,只需打開該應用程序。這是如何完成的?

回答

0

不知何故,你正在啓動該應用程序。據推測,你有一個Intent,你傳遞給startActivity()這樣做。如果是這樣,你有兩個選擇:

  1. 只是在ActivityNotFoundExceptioncatch塊調用startActivity()和路由到你上面的代碼

  2. 使用PackageManagerqueryIntentActivities()看看是否有什麼將你Intent迴應,如果不,請致電以上代碼,不要致電startActivity()

+0

謝謝你。後續,但我仍然可以包裝它,如果技術上我有兩個內容視圖顯示選項?第一個選項是顯示新的應用程序。第二種選擇是將它們帶到屏幕上,如果它們沒有它,則下載該應用程序。我將如何處理? – Jim

+0

另外我不想使用onclicklistener自動啓動應用程序。但是我看到意圖打開單獨應用程序的所有方式都是通過按鈕onclicklistener,該步驟可以跳過嗎? – Jim

+0

@Jim:「我會如何處理?」 - 使用'if()'語句?這是您的應用中的商業邏輯,而不是我的。 「但我看到意圖打開單獨應用程序的所有方式都是通過按鈕onclicklistener」 - 您可以從任何類型的活動事件偵聽器(例如'onListItemClick()')調用'startActivity()'。 – CommonsWare

相關問題