「NeoFiler」のMIMEタイプ・データベースの使い方
Androidアプリの「NeoFiler」はMIMEタイプのデータベースを持っています。
NeoFiler内ではMIME設定画面で管理でき、外部のアプリ開発者に向けては以下の様にデータベースを公開しています。
<provider android:name=".MimeTypeProvider" android:authorities="com.skyarts.provider.MimeType" android:multiprocess="true" />
データベースのテーブル定義は以下の通りです。
CREATE TABLE MIME_CONTENT_TYPES (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
EXTENSION TEXT NOT NULL PRIMARY KEY,
CONTENT_TYPE TEXT NOT NULL,
);
Uriは以下の通り。
content://com.skyarts.provider.MimeType/mimetypes
このMIMEタイプのデータベースの機能により、新たな拡張子ファイルを作成するアプリを起動できるようになります。
例えば、新しいアプリをインストールした後に、このMIMEタイプのデータベースに拡張子とMIMEタイプを設定して置けば該当のアプリを起動できるようになります。
勿論、起動させるためには拡張子とMIMEタイプがわからないと駄目です。そして、該当アプリが外部呼び出しに対応していないと使えません。
しかし、今後も外部呼び出し対応のアプリが増えると考えられます。
ちなみに、アプリ開発者が自アプリをMIMEタイプによる外部呼び出しに対応させるには、「AndroidManifest.xml」ファイルに以下の様に設定します。
<!– TextEditor –>
<activity android:name=”.TextEditorActivity”
android:label=”@string/app_name” android:theme=”@android:style/Theme.NoTitleBar”
android:configChanges=”orientation|keyboardHidden”
android:icon=”@drawable/icon_texteditor”>
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
<data android:mimeType=”text/*” />
<data android:mimeType=”application/*” />
</intent-filter>
</activity>
重要なのは太字の定義です。「android.intent.action.VIEW」指定で外部呼び出し可能である事を指定し、「mimeType=”text/*”」と「mimeType=”application/*”」指定でMIMEタイプとして「text/*」と「application/*」が使用できる事を指定しています。
上記指定により、外部から「text/*」(text/plain、text/htmlなど)に関連するファイルを使って起動して貰えるようになります。
アプリ内では、以下の様にしてIntentから該当ファイルのUriを知る事ができます。
このUriに従ってファイルを読み込むと外部から指定されたファイルを読み込んで連携ができる様になります。
Intent intent = getIntent();
Uri uri = intent.getData();