Возможность открытия сценария из файловой системы

This commit is contained in:
Victor 2015-04-05 15:12:34 +03:00
parent 15309af6d8
commit a2249d130a
2 changed files with 30 additions and 4 deletions

View File

@ -30,7 +30,17 @@
<activity <activity
android:name="com.annimon.everlastingsummer.ViewActivity" android:name="com.annimon.everlastingsummer.ViewActivity"
android:screenOrientation="landscape" android:screenOrientation="landscape"
android:label="@string/app_name" /> android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data
android:scheme="file"
android:host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.rpy" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application> </application>
</manifest> </manifest>

View File

@ -1,10 +1,13 @@
package com.annimon.everlastingsummer; package com.annimon.everlastingsummer;
import java.io.InputStream;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.*; import android.text.*;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
@ -97,10 +100,23 @@ public final class ViewActivity extends Activity {
names.put("odn", new Person("Одногруппник", 0xFFC0C0C0)); names.put("odn", new Person("Одногруппник", 0xFFC0C0C0));
names.put("mt_voice", new Person("Голос", 0xFF00EA32)); // night 0xFF00B627, sunset: 0xFF00EA32, day: 0xFF00EA32, prolog: 0xFF00EA32 names.put("mt_voice", new Person("Голос", 0xFF00EA32)); // night 0xFF00B627, sunset: 0xFF00EA32, day: 0xFF00EA32, prolog: 0xFF00EA32
final String name = getIntent().getStringExtra(EXTRA_NAME); String scriptpath = "";
final String scriptpath = PathResolver.script(name); final Intent intent = getIntent();
try { try {
Parser.parse(Lexer.tokenize( IOUtil.readContents(getAssets().open(scriptpath)) )); InputStream stream = null;
if (intent.hasExtra(EXTRA_NAME)) {
scriptpath = PathResolver.script( intent.getStringExtra(EXTRA_NAME) );
stream = getAssets().open(scriptpath);
} else if (intent.getData() != null) {
final Uri fileUri = intent.getData();
scriptpath = fileUri.getPath();
stream = getContentResolver().openInputStream(fileUri);
} else {
Toast.makeText(this, "Нет данных для отображения", Toast.LENGTH_LONG).show();
finish();
}
Parser.parse(Lexer.tokenize( IOUtil.readContents(stream) ));
Parser.getInstance().next(); Parser.getInstance().next();
} catch (Exception ex) { } catch (Exception ex) {
Toast.makeText(this, "Ошибка при открытии файла " + scriptpath, Toast.LENGTH_LONG).show(); Toast.makeText(this, "Ошибка при открытии файла " + scriptpath, Toast.LENGTH_LONG).show();