support e-mail attachments too for plugin installation
This commit is contained in:
parent
b9499e2d1b
commit
e46372a775
@ -3,6 +3,7 @@ package com.cradle.iitc_mobile;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@ -87,6 +88,7 @@ public class IITC_FileManager {
|
|||||||
// get a list of key-value
|
// get a list of key-value
|
||||||
final String[] attributes = header.split(" +");
|
final String[] attributes = header.split(" +");
|
||||||
// add default values
|
// add default values
|
||||||
|
map.put("id", "unknown");
|
||||||
map.put("version", "not found");
|
map.put("version", "not found");
|
||||||
map.put("name", "unknown");
|
map.put("name", "unknown");
|
||||||
map.put("description", "");
|
map.put("description", "");
|
||||||
@ -94,6 +96,9 @@ public class IITC_FileManager {
|
|||||||
// add parsed values
|
// add parsed values
|
||||||
for (int i = 0; i < attributes.length; i++) {
|
for (int i = 0; i < attributes.length; i++) {
|
||||||
// search for attributes and use the value
|
// search for attributes and use the value
|
||||||
|
if (attributes[i].equals("@id")) {
|
||||||
|
map.put("id", attributes[i + 1]);
|
||||||
|
}
|
||||||
if (attributes[i].equals("@version")) {
|
if (attributes[i].equals("@version")) {
|
||||||
map.put("version", attributes[i + 1]);
|
map.put("version", attributes[i + 1]);
|
||||||
}
|
}
|
||||||
@ -240,7 +245,7 @@ public class IITC_FileManager {
|
|||||||
return EMPTY;
|
return EMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void installPlugin(final String uri, final boolean invalidateHeaders) {
|
public void installPlugin(final Uri uri, final boolean invalidateHeaders) {
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity);
|
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity);
|
||||||
|
|
||||||
@ -274,15 +279,27 @@ public class IITC_FileManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void copyPlugin(final String uri, final boolean invalidateHeaders) {
|
private void copyPlugin(final Uri uri, final boolean invalidateHeaders) {
|
||||||
Thread thread = new Thread(new Runnable() {
|
Thread thread = new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
final URL url = new URL(uri);
|
final String url = uri.toString();
|
||||||
final URLConnection conn = url.openConnection();
|
String fileName = url.substring( url.lastIndexOf('/')+1, url.length() );
|
||||||
final String fileName = uri.substring( uri.lastIndexOf('/')+1, uri.length() );
|
// we need 2 stream since an inputStream is useless after read once
|
||||||
final InputStream is = conn.getInputStream();
|
// we read it twice because we first need the script ID for the fileName and
|
||||||
|
// afterwards reading it again while copying
|
||||||
|
InputStream is, isCopy;
|
||||||
|
if (uri.getScheme().contains("http")) {
|
||||||
|
URLConnection conn = new URL(url).openConnection();
|
||||||
|
URLConnection connCopy = new URL(url).openConnection();
|
||||||
|
is = conn.getInputStream();
|
||||||
|
isCopy = connCopy.getInputStream();
|
||||||
|
} else {
|
||||||
|
is = mActivity.getContentResolver().openInputStream(uri);
|
||||||
|
isCopy = mActivity.getContentResolver().openInputStream(uri);
|
||||||
|
}
|
||||||
|
fileName = getScriptInfo(isCopy).get("id") + ".user.js";
|
||||||
// create IITCm external plugins directory if it doesn't already exist
|
// create IITCm external plugins directory if it doesn't already exist
|
||||||
final File pluginsDirectory = new File(PLUGINS_PATH);
|
final File pluginsDirectory = new File(PLUGINS_PATH);
|
||||||
pluginsDirectory.mkdirs();
|
pluginsDirectory.mkdirs();
|
||||||
|
@ -229,11 +229,10 @@ public class IITC_Mobile extends Activity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uri.getPath().endsWith(".user.js")) {
|
if (uri.getPath().endsWith(".user.js") || intent.getType().contains("javascript")) {
|
||||||
final Intent prefIntent = new Intent(this, IITC_PluginPreferenceActivity.class);
|
final Intent prefIntent = new Intent(this, IITC_PluginPreferenceActivity.class);
|
||||||
prefIntent.putExtra("url", uri.toString());
|
prefIntent.setDataAndType(uri, intent.getType());
|
||||||
startActivity(prefIntent);
|
startActivity(prefIntent);
|
||||||
// TODO receive intent, start dialog if user want to install $plugin, reload IITC
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import android.content.ActivityNotFoundException;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceActivity;
|
import android.preference.PreferenceActivity;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@ -88,7 +89,7 @@ public class IITC_PluginPreferenceActivity extends PreferenceActivity {
|
|||||||
|
|
||||||
mFileManager = new IITC_FileManager(this);
|
mFileManager = new IITC_FileManager(this);
|
||||||
|
|
||||||
final String uri = getIntent().getStringExtra("url");
|
final Uri uri = getIntent().getData();
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
mFileManager.installPlugin(uri, true);
|
mFileManager.installPlugin(uri, true);
|
||||||
}
|
}
|
||||||
@ -152,8 +153,7 @@ public class IITC_PluginPreferenceActivity extends PreferenceActivity {
|
|||||||
switch(requestCode) {
|
switch(requestCode) {
|
||||||
case COPY_PLUGIN_REQUEST:
|
case COPY_PLUGIN_REQUEST:
|
||||||
if (data != null && data.getData() != null) {
|
if (data != null && data.getData() != null) {
|
||||||
String filePath = data.getData().getPath();
|
mFileManager.installPlugin(data.getData(), true);
|
||||||
mFileManager.installPlugin("file://" + filePath, true);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user