2011-08-01 296 views
0

我試圖簡單地啓動第三方應用程序時,當確定按鈕被選中。我有下面的代碼,但它不會在一起。我是一個新手,不能完全弄明白。啓動第三方應用程序

 public class Abc extends Activity { 

static final String MARKET_SEARCH_Q_PNAME_ANDRIOS = "market://search?q=pname:com.3rdparty.app"; 



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

    setContentView(R.layout.getpft); 
    setTitle("Install 3rd party app?"); 

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


public class Openabc implements OnClickListener { 
    public void onClick(View v) { 
     Intent i = new Intent("android.intent.action.MAIN"); 
     i.addCategory("android.intent.category.LAUNCHER"); 
     i.setPackage("com.3rdparty.app"); 
     startActivity(i); 
    }} 


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_ANDRIOS)); 
     startActivity(marketLaunch); 
    }} 

}

+0

一旦你創建的意圖,你打電話'startActivity(意向)',它什麼都不做。 – parkovski

回答

1

我沒有做過的Android了一​​段時間,但通過文件看很快,我想這就是問題所在:

您的類實際上並沒有打算做任何事情,因爲它沒有使用任何Android類(通過繼承或組合)。一旦你創建了Intent,你就會調用一個空方法,所以什麼都不會發生。完成這項工作的最簡單方法是刪除private void startActivity(Intent i)的定義,並將其他內容移至Activity類。如果您需要它,請將該類實現爲OnClickListener,然後調用內置的startActivity方法。

+0

parkovski,我明白這是多麼有道理。我將自己的意圖轉移到主要活動類中,並在選擇確定按鈕時運行。然而,這個意圖本身必須被錯誤構建,因爲它迫使關閉。有任何想法嗎? 這實在只是大局的一部分。那就是我希望班級檢查是否安裝了第三方應用程序。如果不是那麼他們搜索市場並安裝它。之後,當他們來到這個頁面時,我希望那個應用能夠在我的地方自動打開。我用我的意圖使用正確的軟件包名稱,所以我有點迷路。 感謝 – Jim

2

總之,你沒有正確地建立意圖。

Here是通過意圖啓動另一活動的示例。要特別注意的是他們建立意圖的方式。

我真的不能幫不知道你想打,但這裏的意圖的細節是鏈接的肉:

Intent intent = new Intent("com.3rdpartydev.abcapp.GO"); 
    intent.setPackage("com.3rdpartydev.abcapp"); 
    startActivity(intent); 

那會告訴安卓尋找的東西,知道如何處理com.3rdpartydev.abcapp.GO請求,如果它能找到它,請啓動它。

我建議重讀this瞭解更多信息

+0

來處理「如果沒有安裝」的情況,您將調用包裝到try/catch塊的startActivity中,並且如果您捕捉到應用程序不存在時引發的異常,則應該啓動市場活動與搜索您要安裝的特定應用程序。如果你沒有得到任何這方面的信息,我可以在今天晚上發佈更多的代碼。 – Travis

+0

草坪如果你能提供一個很棒的例子。你給我提供的東西非常棒,我會試着想辦法把它們放在一起。 – Jim

+0

是否有文檔可以共享?也許如果我看到你想要做的是什麼,我可以給你一個更好的答案。 – Travis

相關問題