2011-08-01 6 views
0

私はOKボタンが選択されたときに3番目の部分のアプリケーションを起動しようとしています。私は次のコードを持っていますが、それは一緒に来ていません。私はこれの初心者であり、それを理解することはできません。3番目の部分のアプリケーションを起動

 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

のために再読み込みthisをお勧めしたい、あなたは '何もしませんstartActivity(インテント)'、呼んでいます。 – parkovski

答えて

1

私はしばらくの間、アンドロイドを行っていないが、すぐにドキュメントを見、私はこれが問題であると思っています:

あなたのクラスは、実際にするつもりはありませんAndroidクラスの(継承または合成を介して)使用しないため、何でもしてください。 Intentを作成すると、空のメソッドが呼び出されるため、何も起こりません。この作業を行う最も簡単な方法は、private void startActivity(Intent i)の定義を削除し、他のものをActivityクラスに移動することです。そのクラスに、必要ならばOnClickListenerを実装してから、startActivityメソッドを組み込みます。

+0

parkovski、私はそれがもっと理にかなっていることを理解しています。自分の意図を主なアクティビティー・クラスに移動し、「OK」ボタンが選択されたときに実行する必要があります。しかし、その意図自体は強制的に閉ざされているので、ミスコンストされていなければなりません。何か案は? これは実際に大きな画像の一部です。つまり、クラスの3番目の部分のアプリケーションがインストールされているかどうかを確認するクラスです。そうでない場合は、市場を検索してインストールします。その後、彼らがこのページに来るとき、私はそのアプリが自動的に私の中で開くようにしたい。私は自分の意図で正しいパッケージ名を使用していますので、少し失われています。 ありがとう – Jim

2

要するに、あなたは意図を正しく構築していません。

Hereは、インテントで別のアクティビティを起動する例です。特別な注意を払うのは、彼らが意図を築く方法です。

私は本当にあなたがヒットしようとしている意図の詳細を知らずに役立ちますが、ここでは、リンクの肉であることはできません。

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

その何かを探すためにアンドロイドを教えてくれることcom.3rdpartydev.abcapp.GOリクエストを処理する方法を知っており、見つかった場合は起動します。あなたが意図を作成したら

私はより多くの情報

+0

"インストールされていない場合"を処理するには、try/catchブロックでstartActivityの呼び出しをラップし、アプリケーションが存在しないときにスローされた例外をキャッチすると、マーケットを開始する必要がありますあなたがインストールしようとしている特定のアプリを検索して、これでどこにもいらない場合は、今晩、もっと正確なコードを投稿できます。 – Travis

+0

幻想的な例を提供できれば芝生。あなたが私に提供してくれたことは素晴らしかったです。 – Jim

+0

共有できるドキュメントはありますか?もしあなたがしようとしていたことを見たなら、あなたに良い答えを与えることができました。 – Travis

関連する問題