Для начала необходимо добавить код intent_filter в файле AndroidManifest для той Activity которая будет отвечать за обработку открытия файла с расширением .vnnt. Расширение может быть любым, желательно чтобы оно было уникальным.
<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="file" />
<data android:scheme="content" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.vnnt" />
<data android:pathPattern=".*\\..*\\.vnnt" />
<data android:pathPattern=".*\\..*\\..*\\.vnnt" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.vnnt" />
<data android:host="*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="content" />
<data android:host="*" />
<data android:pathPattern=".*\\.vnnt" />
<data android:pathPattern=".*\\..*\\.vnnt" />
<data android:pathPattern=".*\\..*\\..*\\.vnnt" />
<data android:pathPattern=".*\\..*\\..*\\..*\\.vnnt" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" />
<data android:mimeType="application/octet-stream" />
</intent-filter>
Последний intent-filter необходим в случае использования Gmail или Samsung Email App в качестве e-mail. Для Outlook необходимо указать так же
<data android:mimeType="application/my-custom-extension"/>
Далее для получения содержимого файла в виде текста подойдет вот такой метод в Activity (необходим Intent полученный из getIntent() для получения Uri):
public void getContentName(Context context) {
Uri uri = getIntent().getData();
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
int size = inputStream.available();
byte[] bytes = new byte[size];
inputStream.read(bytes);
inputStream.close();
String jsonString = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
jsonString = new String(bytes, StandardCharsets.UTF_8);
}
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("File Content");
builder.setMessage(jsonString);
builder.setPositiveButton("OK", null);
builder.create().show();
} catch (IOException e) {
Toast.makeText(context, "Fail to read file", Toast.LENGTH_SHORT).show();
}
}