マニフェストで次のインテント フィルターを定義しました。これにより、ブラウザーや電子メールの添付ファイルからダウンロードした .ips ファイルを開くことができます。
<intent-filter
android:icon='@drawable/ic_launcher'
android:label="@string/quick_patcher_label"
android:priority='1'>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="*/*" />
<data android:pathPattern="*.ips" />
</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="*/*" android:scheme="http" android:host="*" android:pathPattern=".*\\.ips" />
<data android:mimeType="*/*" android:scheme="https" android:host="*" android:pathPattern=".*\\.ips" />
</intent-filter>
ファイル名として「false」になったこの質問の回答の一部を試しましたが、これも試しました。このインテント フィルターで開いたファイルのファイル パスをアクティビティ内から取得するにはどうすればよいですか?
編集:これは別の質問で見つかりました。ダウンロードから開くと機能しますが、電子メールから開くと NullPointerException が発生します。その理由を知っている人はいますか?
public String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}