diff options
Diffstat (limited to 'packages/DynamicSystemInstallationService/src')
3 files changed, 16 insertions, 8 deletions
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java index e479e387b95a..2ad72eb725a9 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java @@ -221,12 +221,12 @@ public class DynamicSystemInstallationService extends Service return; } - String url = intent.getStringExtra(DynamicSystemClient.KEY_SYSTEM_URL); + String url = intent.getDataString(); mSystemSize = intent.getLongExtra(DynamicSystemClient.KEY_SYSTEM_SIZE, 0); mUserdataSize = intent.getLongExtra(DynamicSystemClient.KEY_USERDATA_SIZE, 0); mInstallTask = new InstallationAsyncTask( - url, mSystemSize, mUserdataSize, mDynSystem, this); + url, mSystemSize, mUserdataSize, this, mDynSystem, this); mInstallTask.execute(); @@ -410,7 +410,7 @@ public class DynamicSystemInstallationService extends Service } private boolean verifyRequest(Intent intent) { - String url = intent.getStringExtra(DynamicSystemClient.KEY_SYSTEM_URL); + String url = intent.getDataString(); return VerificationActivity.isVerified(url); } diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java index aee5de5efd5e..b0e28a029436 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java @@ -16,7 +16,9 @@ package com.android.dynsystem; +import android.content.Context; import android.gsi.GsiProgress; +import android.net.Uri; import android.os.AsyncTask; import android.os.image.DynamicSystemManager; import android.util.Log; @@ -59,6 +61,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> { private final String mUrl; private final long mSystemSize; private final long mUserdataSize; + private final Context mContext; private final DynamicSystemManager mDynSystem; private final InstallStatusListener mListener; private DynamicSystemManager.Session mInstallationSession; @@ -68,11 +71,12 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> { private InputStream mStream; - InstallationAsyncTask(String url, long systemSize, long userdataSize, + InstallationAsyncTask(String url, long systemSize, long userdataSize, Context context, DynamicSystemManager dynSystem, InstallStatusListener listener) { mUrl = url; mSystemSize = systemSize; mUserdataSize = userdataSize; + mContext = context; mDynSystem = dynSystem; mListener = listener; } @@ -197,6 +201,10 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> { private void initInputStream() throws IOException, InvalidImageUrlException { if (URLUtil.isNetworkUrl(mUrl) || URLUtil.isFileUrl(mUrl)) { mStream = new BufferedInputStream(new GZIPInputStream(new URL(mUrl).openStream())); + } else if (URLUtil.isContentUrl(mUrl)) { + Uri uri = Uri.parse(mUrl); + mStream = new BufferedInputStream(new GZIPInputStream( + mContext.getContentResolver().openInputStream(uri))); } else { throw new InvalidImageUrlException( String.format(Locale.US, "Unsupported file source: %s", mUrl)); diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java index f05930f8ec07..269645d8016b 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java @@ -17,13 +17,13 @@ package com.android.dynsystem; import static android.os.image.DynamicSystemClient.KEY_SYSTEM_SIZE; -import static android.os.image.DynamicSystemClient.KEY_SYSTEM_URL; import static android.os.image.DynamicSystemClient.KEY_USERDATA_SIZE; import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.os.UserHandle; import android.os.image.DynamicSystemClient; @@ -81,16 +81,16 @@ public class VerificationActivity extends Activity { // retrieve data from calling intent Intent callingIntent = getIntent(); - String url = callingIntent.getStringExtra(KEY_SYSTEM_URL); + Uri url = callingIntent.getData(); long systemSize = callingIntent.getLongExtra(KEY_SYSTEM_SIZE, 0); long userdataSize = callingIntent.getLongExtra(KEY_USERDATA_SIZE, 0); - sVerifiedUrl = url; + sVerifiedUrl = url.toString(); // start service Intent intent = new Intent(this, DynamicSystemInstallationService.class); + intent.setData(url); intent.setAction(DynamicSystemClient.ACTION_START_INSTALL); - intent.putExtra(KEY_SYSTEM_URL, url); intent.putExtra(KEY_SYSTEM_SIZE, systemSize); intent.putExtra(KEY_USERDATA_SIZE, userdataSize); |