2011-11-16 1 views
10

よく調べましたが、アクティビティをエクスポートする方法について正確な回答が見つからなかったので、アプリケーションでstartActivityforResultを起動することができます。他のアプリが呼び出せるようにアクティビティをエクスポートするにはどうすればいいですか?

どのように達成できますか?マニフェストをいくつかの方法で変更する必要がありますか?

答えて

13

あなたは(私はバーコードスキャナから次の例を取っ​​た)あなたのマニフェストに意図-フィルタを宣言する必要があります:

<activity android:name="..."> 
    <intent-filter> 
     <action android:name="com.google.zxing.client.android.SCAN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

次に、同じアクション文字列と意図を作成します。

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
startActivityForResult(intent, code); 

Androidでアクティビティを開始する必要があります(複数のアプリが同じアクション文字列を共有している場合は、プルダウンボックスが表示されます)。

+0

ありがとう、私はBarcodescannerマニフェストを読んで、同じことを見つけました。 :] – Force

21

Dalmasの回答の代わりに、実際にActivityをエクスポートして、<intent-filter>を作成しなくても(カスタムアクションの手間がかかります)。 Manifest編集あなたActivityタグで

そうのように:

<activity 
    android:name=".SomeActivity" 
    .... 
    android:exported="true" /> 

重要な部分は、android:exported="true"あり、このexportタグは「活動は、他のアプリケーションのコンポーネントによって起動することができるかどうか」を決定します。 <activity><intent-filter>が含まれている場合、このタグは自動的にtrueに設定され、それ以外の場合はデフォルトでfalseに設定されます。あなたが起動しようとしている活動の正確な名前を知っている必要がありますこの方法ではもちろん

Intent i = new Intent(); 
i.setComponent(new ComponentName("package name", "fully-qualified name of activity")); 
startActivity(i); 

:次にActivityこれを行う起動する

+0

ありがとう!私のアプリは突然、この変更を取り除いた後でさえも、重要な変更を加えてもこのエラーを投げ始めましたが、これは修正されました! – Michael

+0

デフォルトの動作については非常に良い仕様です。外部のアプリは、私のアプリの主な活動がエクスポートされたと言っていた、なぜ私はあなたの答えを読むまで理解できませんでした...良い一日を! – Antonino

関連する問題