2016-08-11 60 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]已停止。」

如果我期待通過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 Activity類實例,因此該類未找到錯誤。

我們使用用於控制主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應用程序的活動。所以你應該能夠添加你需要的其他意圖過濾器。

相關問題