2012-03-27 5 views
2

Eclipseのエミュレータを使用してアプリケーションから別のアプリケーションのアクティビティを呼び出すとき、「ActivityNotFoundException:明示的なアクティビティクラスを見つけることができません。おそらく問題は多分関連しているかもしれません。私は、「設定」の「アプリケーションの管理」をクリックすると、両方のアプリケーションを同時にダウンロード/ダウンロードすることができません。これは、別のアプリケーションのアクティビティを呼び出すために必要な最初のプロジェクトです。しかし、コードが正しいかどうかはわかりません。私が下に示すコードスニペットにエラーがあるかどうかを判断するのを助けてください。目的を達成するための目的のアクションフィールドを設定することはできますが、このための学習資料は見つけられていないことが示唆されています。呼び出し側のアプリケーションでsetComponentメソッドを使用し、android:exportを呼び出されたアクティビティのAndroidManifest.xmlに追加する方法について学びました。前もって感謝します!別のアプリケーション他のアプリケーションのアクティビティを呼び出すときにActivityNotFoundExceptionが発生しました

<activity android:name=".Activity1" android:exported = "true">   
     <intent-filter> 
      <action android:name="com.MyPackage.Activity1" /> 
      <category android:name="android.intent.category.DEFAULT" />    
     </intent-filter> 
</activity> 

答えて

4

の活動のAndroidManifest.xmlをの関連するコード

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".MainActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Activity1"> 
     <intent-filter> 
      <action android:name="com.MyPackage.Activity1" /> 
      <category android:name="android.intent.category.DEFAULT" />    
     </intent-filter> 
    </activity> 

</application> 

:アプリの関連のAndroidManifest.xmlを呼び出す

Intent intent = new Intent();     
intent.setComponent(new ComponentName("com.MyPackage", om.MyPackage.Activity1)); 
startActivity(intent); 

:アプリの関連するソースコードを呼び出す

まず、あなたがあなたは今com.MyPackage.*接頭

  • OR使用名Activity1Activity2
  • を持っている彼らに別の名前空間
    • 両方のアプリケーションを提供する必要が

      • アプリケーション1にActivityからアプリケーション2での活動を開始

        だから、その後、あなたがMyPackage1からMyPackage2でActivity1を開始するには、このコードを使用することができます

        com.MyPackage1.Activity1 
        // and 
        com.MyPackage2.Activity1 
        

        を持つことになります。

        // in file com.MyPackage1.Activity1 
        Intent intent = new Intent(); 
        intent.setComponent(new ComponentName("com.MyPackage2", "com.MyPackage2.Activity1")); 
        startActivity(intent); 
        

        そして、あなたのAndroidManifest.xmlファイルは次のようになります。:

        最初

        <application android:icon="@drawable/icon" android:label="@string/app_name"> 
            <activity android:name="com.MyPackage1.Activity1" 
               android:label="@string/app_name"> 
             <intent-filter> 
              <action android:name="android.intent.action.MAIN" /> 
              <category android:name="android.intent.category.LAUNCHER" /> 
             </intent-filter> 
            </activity> 
        
        </application> 
        

        <application android:icon="@drawable/icon" android:label="@string/app_name"> 
            <activity android:name="com.MyPackage2.Activity1" 
               android:label="@string/app_name"> 
             <intent-filter> 
              <action android:name="android.intent.action.MAIN" /> 
              <category android:name="android.intent.category.LAUNCHER" /> 
             </intent-filter> 
            </activity> 
        
        </application> 
        

        をSO関連の質問を参照してください How to start activity in another application?

    +0

    推奨変更を行った後も、まだActivityNotFoundExceptionまたはClassNotFoundExceptionが発生しています。おそらく、それはエミュレータ上にアプリケーションを正しくインストールできないことと関係があります。私の最新の取り組みでは、まず、adbコマンドを使用して呼び出されたアプリケーション(Activity1クラスを含む)をインストールしました。それからEclipseから呼び出しているアプリを実行します。これはおそらくいくつかの奇妙な理由で呼び出されたアプリケーションがもはやエミュレータにないことが原因で、Activity1に関するClassNotFoundExceptionを生成します。なぜそれはもはやインストールされていないのですか?これが私の問題の一部なら解決方法ありがとう! – macrogeo

    +0

    別のアプリケーションでアクティビティを呼び出そうとしていますか?同じアプリケーションで2番目のアクティビティを開始することを指していました。私の編集した答えを参照 –

    +1

    それは動作します!マレクありがとう! – macrogeo

    関連する問題