2016-08-11 11 views
1

Adob​​e AIR特定のタイプのファイルを開くためにAndroidアプリが自動的に使用されるように設定しようとしています。私はこれの多くの例を見てきましたが、正しく動作するものを見つけることができませんでした(SOに関する多くの関連する質問は4-6歳であり、おそらく正確ではありません)。インテントフィルタを使用してAdobe AIRアプリケーションでファイルタイプを開く

私のアプリで拡張子.abcのバイナリファイルを開きたいとしましょう。 (私はそれに任意の機能を追加しようとする直前に呼び出しが動作して取得しようとしている)

<android> 
    <manifestAdditions> 
    <![CDATA[ 
     <manifest android:installLocation="auto"> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" /> 
    <application> 
     <activity android:name="com.example.myapp.OpenFileActivity" android:label="MyApp"> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
       <category android:name="android.intent.category.BROWSABLE"/> 
       <data android:mimeType="application/abc"/> 
      </intent-filter> 

      <intent-filter> 
       <action android:name="android.intent.action.VIEW"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
       <category android:name="android.intent.category.BROWSABLE"/> 
       <data android:mimeType="application/octet-stream"/> 
      </intent-filter> 

      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.BROWSABLE" /> 
       <data android:scheme="content" /> 
       <data android:mimeType="*/*" /> 
       <data android:pathPattern=".*\\.abc" /> 
       <data android:host="*" /> 
      </intent-filter> 

     </activity> 
    </application> 
     </manifest> 
    ]]> 
    </manifestAdditions> 
</android> 

AS3コード:これは私が自分のアプリケーション記述子に追加したものです

//... 
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke); 
//...  

private function onInvoke(e:InvokeEvent):void { 
    trace(e.toString()); 
} 

私がインストールした後アプリケーションディスクリプタで上記のコードを使用しているアプリで、ABCファイルを開こうとすると(Gmailの添付ファイルをタップするなどして)、すぐに「[app name] has stopped。」というメッセージがすぐに表示されます。

私はlogcatを通じて見れば、私はエラーを参照してください。

E/AndroidRuntime(13835): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myapp/com.example.myapp.OpenFileActivity}:

java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.OpenFileActivity" on path: DexPathList[[zip file "/data/app/com.example.myapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.myapp-1, /vendor/lib, /system/lib]]

を私はandroid:name="com.example.myapp.OpenFileActivity"を削除した場合、私はビルドエラーを取得:Tag <activity> missing required attribute name.

私は何をしないか、間違っているのでしょうか? これはAdobe AIRアプリケーションであり、ネイティブのAndroidアプリではありません。

答えて

1

問題は、定義しているアクティビティOpenFileActivityは実際にアプリケーションのJavaアクティビティクラスインスタンスではないため、クラスが見つかりませんというエラーです。

私たちは、メインのAIRの活動を制御するために、次を使用し

<manifestAdditions> 
    <![CDATA[ 
    <manifest android:installLocation="auto"> 

     <application> 
      <activity> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN"/> 
        <category android:name="android.intent.category.LAUNCHER"/> 
       </intent-filter> 
       <intent-filter> 
        <action android:name="android.intent.action.VIEW"/> 
        <category android:name="android.intent.category.DEFAULT"/> 
        <category android:name="android.intent.category.BROWSABLE"/> 
        <data android:scheme="custom_url_scheme" /> 
       </intent-filter> 
      </activity> 

     </application> 

    </manifest> 
    ]]> 
</manifestAdditions> 

空白のアクティビティ・ノードを使用して、実際のAIRアプリケーションのアクティビティにインテントフィルタを追加する必要があります。したがって、その時点で必要な他のインテントフィルタを追加できるはずです。

関連する問題