Toast.makeText(context, getString(R.string.unzippingDictionary, dest),
Toast.LENGTH_LONG).show();
-
- final Uri zipUri = Uri.parse(dest);
- File localZipFile = null;
- InputStream zipFileStream = null;
- ZipInputStream zipFile = null;
- FileOutputStream zipOut = null;
- try {
- if (zipUri.getScheme().equals("content")) {
- zipFileStream = context.getContentResolver().openInputStream(zipUri);
- localZipFile = null;
- } else {
- localZipFile = new File(zipUri.getPath());
- zipFileStream = new FileInputStream(localZipFile);
- }
- zipFile = new ZipInputStream(new BufferedInputStream(zipFileStream));
- final ZipEntry zipEntry = zipFile.getNextEntry();
- Log.d(LOG, "Unzipping entry: " + zipEntry.getName());
- File targetFile = new File(application.getDictDir(), zipEntry.getName());
- if (targetFile.exists()) {
- targetFile.renameTo(new File(targetFile.getAbsolutePath().replace(".quickdic", ".bak.quickdic")));
- targetFile = new File(application.getDictDir(), zipEntry.getName());
- }
- zipOut = new FileOutputStream(targetFile);
- copyStream(zipFile, zipOut);
- application.backgroundUpdateDictionaries(dictionaryUpdater);
- Toast.makeText(context, getString(R.string.installationFinished, dest),
- Toast.LENGTH_LONG).show();
+ if (unzipInstall(context, Uri.parse(dest), dest)) {
finishedDownloadIds.add(downloadId);
Log.w(LOG, "Unzipping finished: " + dest + " Id: " + downloadId);
- } catch (Exception e) {
- String msg = getString(R.string.unzippingFailed, dest);
- File dir = application.getDictDir();
- if (!dir.canWrite() || !application.checkFileCreate(dir)) {
- msg = getString(R.string.notWritable, dir.getAbsolutePath());
- }
- new AlertDialog.Builder(context).setTitle(getString(R.string.error)).setMessage(msg).setNeutralButton("Close", null).show();
- Log.e(LOG, "Failed to unzip.", e);
- } finally {
- try {
- if (zipOut != null) zipOut.close();
- } catch (IOException e) {}
- try {
- if (zipFile != null) zipFile.close();
- } catch (IOException e) {}
- try {
- if (zipFileStream != null) zipFileStream.close();
- } catch (IOException e) {}
- if (localZipFile != null) localZipFile.delete();
}
}
}
};
+ private boolean unzipInstall(Context context, Uri zipUri, String dest) {
+ File localZipFile = null;
+ InputStream zipFileStream = null;
+ ZipInputStream zipFile = null;
+ FileOutputStream zipOut = null;
+ boolean result = false;
+ try {
+ if (zipUri.getScheme().equals("content")) {
+ zipFileStream = context.getContentResolver().openInputStream(zipUri);
+ localZipFile = null;
+ } else {
+ localZipFile = new File(zipUri.getPath());
+ zipFileStream = new FileInputStream(localZipFile);
+ }
+ zipFile = new ZipInputStream(new BufferedInputStream(zipFileStream));
+ final ZipEntry zipEntry = zipFile.getNextEntry();
+ Log.d(LOG, "Unzipping entry: " + zipEntry.getName());
+ File targetFile = new File(application.getDictDir(), zipEntry.getName());
+ if (targetFile.exists()) {
+ targetFile.renameTo(new File(targetFile.getAbsolutePath().replace(".quickdic", ".bak.quickdic")));
+ targetFile = new File(application.getDictDir(), zipEntry.getName());
+ }
+ zipOut = new FileOutputStream(targetFile);
+ copyStream(zipFile, zipOut);
+ application.backgroundUpdateDictionaries(dictionaryUpdater);
+ Toast.makeText(context, getString(R.string.installationFinished, dest),
+ Toast.LENGTH_LONG).show();
+ result = true;
+ } catch (Exception e) {
+ String msg = getString(R.string.unzippingFailed, dest);
+ File dir = application.getDictDir();
+ if (!dir.canWrite() || !application.checkFileCreate(dir)) {
+ msg = getString(R.string.notWritable, dir.getAbsolutePath());
+ }
+ new AlertDialog.Builder(context).setTitle(getString(R.string.error)).setMessage(msg).setNeutralButton("Close", null).show();
+ Log.e(LOG, "Failed to unzip.", e);
+ } finally {
+ try {
+ if (zipOut != null) zipOut.close();
+ } catch (IOException e) {}
+ try {
+ if (zipFile != null) zipFile.close();
+ } catch (IOException e) {}
+ try {
+ if (zipFileStream != null) zipFileStream.close();
+ } catch (IOException e) {}
+ if (localZipFile != null) localZipFile.delete();
+ }
+ return result;
+ }
+
public static Intent getLaunchIntent(Context c) {
final Intent intent = new Intent(c, DictionaryManagerActivity.class);
intent.putExtra(C.CAN_AUTO_LAUNCH_DICT, false);
@Override
public void onCreate(Bundle savedInstanceState) {
- // This must be first, otherwise the actiona bar doesn't get
+ DictionaryApplication.INSTANCE.init(getApplicationContext());
+ application = DictionaryApplication.INSTANCE;
+ // This must be first, otherwise the action bar doesn't get
// styled properly.
- setTheme(((DictionaryApplication) getApplication()).getSelectedTheme().themeId);
+ setTheme(application.getSelectedTheme().themeId);
super.onCreate(savedInstanceState);
Log.d(LOG, "onCreate:" + this);
- application = (DictionaryApplication) getApplication();
+ setTheme(application.getSelectedTheme().themeId);
blockAutoLaunch = false;
readableCheckAndError(true);
onCreateSetupActionBar();
+
+ final Intent intent = getIntent();
+ if (intent != null && intent.getAction() != null &&
+ intent.getAction().equals(Intent.ACTION_VIEW)) {
+ blockAutoLaunch = true;
+ Uri uri = intent.getData();
+ unzipInstall(this, uri, uri.getLastPathSegment());
+ }
}
private void onCreateSetupActionBar() {
builder.append(getString(R.string.updateAvailable));
}
for (IndexInfo indexInfo : sortedIndexInfos) {
- final View button = application.createButton(buttons.getContext(), dictionaryInfo,
- indexInfo);
+ final View button = IsoUtils.INSTANCE.createButton(buttons.getContext(), dictionaryInfo,
+ indexInfo, application.languageButtonPixels);
buttons.addView(button);
if (canLaunch) {
// Due to a bug, cursor is null instead of empty when
// the download manager is disabled.
if (cursor == null) {
+ String msg = getString(R.string.downloadManagerQueryFailed);
new AlertDialog.Builder(DictionaryManagerActivity.this).setTitle(getString(R.string.error))
- .setMessage(getString(R.string.downloadFailed, R.string.downloadManagerQueryFailed))
+ .setMessage(getString(R.string.downloadFailed, msg))
.setNeutralButton("Close", null).show();
return;
}