我試圖設置我的Adobe 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應用程序。