0

私は Titanium SDK 2.1.3 に取り組んでおり、Android 向けにデプロイしています。この記事に従って、application/*、image/*、audio/* などの MIME タイプを開くことができるアプリケーションのリストに自分のアプリを含めました。私のAndroidマニフェストは次のようになりました:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="nenvo.com.desktop" android:versionCode="1"
    android:versionName="1">
    <uses-sdk android:minSdkVersion="8" />

    <!-- TI_MANIFEST -->

    <application android:icon="@drawable/appicon"
        android:label="Desktop Lite" android:name="DesktopLiteApplication"
        android:debuggable="false">

        <!-- TI_APPLICATION -->

        <activity android:name=".DesktopLiteActivity"
            android:label="Desktop Lite" android:theme="@style/Theme.Titanium"
            android:configChanges="keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data android:scheme="content" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- open any mime type file -->
                <data android:mimeType="application/*" />
                <data android:mimeType="audio/*" />
                <data android:mimeType="image/*" />
                <data android:mimeType="text/*" />
                <data android:mimeType="video/*" />
            </intent-filter>
        </activity>



        <activity android:name="org.appcelerator.titanium.TiActivity"
            android:configChanges="keyboardHidden|orientation" />
        <activity android:name="org.appcelerator.titanium.TiTranslucentActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent" />
        <activity android:name="org.appcelerator.titanium.TiModalActivity"
            android:configChanges="keyboardHidden|orientation"
            android:theme="@android:style/Theme.Translucent" />
        <activity android:name="ti.modules.titanium.ui.TiTabActivity"
            android:configChanges="keyboardHidden|orientation" />
        <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity" />

        <service android:name="org.appcelerator.titanium.analytics.TiAnalyticsService"
            android:exported="false" />


    </application>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


</manifest>

メールの添付ファイルを開こうとするとアプリが起動するようになりました。問題は、開こうとしているファイルを取得する方法がわからないことです。Android アプリケーションの開始イベントと再開イベントで次のことを試しました。 :

activity.addEventListener('start', function() {
    Ti.API.log('*** Start Event Called ***');
    var args = activity.getIntent().getData(); // this is null
    functions.handleFunction(args); 
});

activity.addEventListener('resume', function() {
    Ti.API.log('*** Resume Event Called ***');
    var args = activity.getIntent().getData(); //this is also null
    functions.handleFunction(args);
});

インテントのデータを取得しようとすると、結果として null が返されました。Intent オブジェクトを表示すると、次のようになります。

{"flags":0,"type":null,"data":null,"action":null}

インテントに関するデータを受信して​​いないのはなぜですか? 私は何か間違ったことをしていますか?

編集

特定のファイルを開くことができるアプリのリストからアプリを開くと、アプリが以前に閉じられていたかのように (以前に開いていたとしても) 起動することに気付きました。この app.js ファイルの読み込み中にインテントを取得しようとしましたが、驚いたことに、インテントのデータを取得しました。これは次のとおりです。

content://com.android.email.attachmentprovider/1/2/RAW

どうすればそれを開くことができますか? アプリケーションディレクトリに保存できるように、そのアドレスからファイルを取得するにはどうすればよいですか?

編集2

次のようにそのアドレスからファイルを取得しようとしました:

var tmpFile = Ti.Filesystem.getFile(String(currentActivity.getIntent().getData()));

しかし、私が得たのは、次のような File オブジェクトでした。

{
    "writable": false,
    "symbolicLink": false,
    "parent": null,
    "readonly": true,
    "nativePath": "content://com.android.email.attachmentprovider/1/2/RAW",
    "executable": false,
    "name": "api-eventos.txt",
    "directoryListing": null,
    "hidden": false,
    "size": 0
}

元のファイルの名前は表示されますが、サイズが 0 で、元のファイルの情報が含まれていないようです。読み取ろうとした結果、null が返されました。添付ファイルのアドレスからファイルを取得するにはどうすればよいですか?

4

1 に答える 1