diff --git a/README.md b/README.md index 557c5d9be..885b7267d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ WARNING: PUTTING NEWPIPE OR ANY FORK OF IT INTO GOOGLE PLAYSTORE VIOLATES THEIR NewPipe: A free lightweight Youtube frontend for Android. [![NewPipe](app/src/main/res/mipmap-xhdpi/ic_launcher.png)](https://newpipe.schabi.org) -[![F-Droid](https://f-droid.org/wiki/images/0/06/F-Droid-button_get-it-on.png)](https://f-droid.org/repository/browse/?fdfilter=newpipe&fdid=org.schabi.newpipe) +[![F-Droid](https://f-droid.org/wiki/images/0/06/F-Droid-button_get-it-on.png)](https://f-droid.org/packages/org.schabi.newpipe/) Project status: diff --git a/app/build.gradle b/app/build.gradle index e2fa1449e..bc8f124cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.schabi.newpipe" minSdkVersion 15 targetSdkVersion 25 - versionCode 35 - versionName "0.9.8" + versionCode 36 + versionName "0.9.9" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java b/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java index 382f2ffa5..fdf324526 100644 --- a/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java +++ b/app/src/main/java/org/schabi/newpipe/download/DownloadActivity.java @@ -1,60 +1,28 @@ package org.schabi.newpipe.download; -import android.annotation.TargetApi; -import android.app.AlertDialog; import android.app.FragmentTransaction; -import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.View; import android.view.ViewTreeObserver; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.RadioButton; -import android.widget.SeekBar; -import android.widget.TextView; -import android.widget.Toast; import org.schabi.newpipe.R; -import org.schabi.newpipe.settings.NewPipeSettings; import org.schabi.newpipe.settings.SettingsActivity; import org.schabi.newpipe.util.ThemeHelper; -import java.io.File; - import us.shandian.giga.service.DownloadManagerService; import us.shandian.giga.ui.fragment.AllMissionsFragment; import us.shandian.giga.ui.fragment.MissionsFragment; -import us.shandian.giga.util.CrashHandler; -public class DownloadActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { - - public static final String INTENT_DOWNLOAD = "us.shandian.giga.intent.DOWNLOAD"; - - public static final String INTENT_LIST = "us.shandian.giga.intent.LIST"; - public static final String THREADS = "threads"; - private static final String TAG = DownloadActivity.class.toString(); - private MissionsFragment mFragment; - - - private String mPendingUrl; - private SharedPreferences mPrefs; +public class DownloadActivity extends AppCompatActivity { @Override - @TargetApi(21) protected void onCreate(Bundle savedInstanceState) { - CrashHandler.init(this); - CrashHandler.register(); - // Service Intent i = new Intent(); i.setClass(this, DownloadManagerService.class); @@ -74,8 +42,6 @@ public class DownloadActivity extends AppCompatActivity implements AdapterView.O actionBar.setDisplayShowTitleEnabled(true); } - mPrefs = PreferenceManager.getDefaultSharedPreferences(this); - // Fragment getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override @@ -84,140 +50,17 @@ public class DownloadActivity extends AppCompatActivity implements AdapterView.O getWindow().getDecorView().getViewTreeObserver().removeGlobalOnLayoutListener(this); } }); - - // Intent - if (getIntent().getAction() != null && getIntent().getAction().equals(INTENT_DOWNLOAD)) { - mPendingUrl = getIntent().getData().toString(); - } - } - - @Override - protected void onNewIntent(Intent intent) { - super.onNewIntent(intent); - - if (intent.getAction().equals(INTENT_DOWNLOAD)) { - mPendingUrl = intent.getData().toString(); - } - } - - @Override - protected void onResume() { - super.onResume(); - - if (mPendingUrl != null) { - showUrlDialog(); - mPendingUrl = null; - } } private void updateFragments() { - mFragment = new AllMissionsFragment(); - + MissionsFragment fragment = new AllMissionsFragment(); getFragmentManager().beginTransaction() - .replace(R.id.frame, mFragment) + .replace(R.id.frame, fragment) .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE) .commit(); } - private void showUrlDialog() { - // Create the view - LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View v = inflater.inflate(R.layout.dialog_url, null); - final EditText name = (EditText) v.findViewById(R.id.file_name); - final TextView tCount = (TextView) v.findViewById(R.id.threads_count); - final SeekBar threads = (SeekBar) v.findViewById(R.id.threads); - final Toolbar toolbar = (Toolbar) v.findViewById(R.id.toolbar); - final RadioButton audioButton = (RadioButton) v.findViewById(R.id.audio_button); - - - threads.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) { - tCount.setText(String.valueOf(progress + 1)); - } - - @Override - public void onStartTrackingTouch(SeekBar p1) { - - } - - @Override - public void onStopTrackingTouch(SeekBar p1) { - - } - - }); - - int def = mPrefs.getInt(THREADS, 4); - threads.setProgress(def - 1); - tCount.setText(String.valueOf(def)); - - name.setText(getIntent().getStringExtra("fileName")); - - toolbar.setTitle(R.string.add); - toolbar.setNavigationIcon(ThemeHelper.isLightThemeSelected(this) ? R.drawable.ic_arrow_back_black_24dp : R.drawable.ic_arrow_back_white_24dp); - toolbar.inflateMenu(R.menu.dialog_url); - - // Show the dialog - final AlertDialog dialog = new AlertDialog.Builder(this) - .setCancelable(true) - .setView(v) - .create(); - - dialog.show(); - - toolbar.setNavigationOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - dialog.dismiss(); - } - }); - - toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - if (item.getItemId() == R.id.okay) { - - String location; - if (audioButton.isChecked()) { - location = NewPipeSettings.getAudioDownloadPath(DownloadActivity.this); - } else { - location = NewPipeSettings.getVideoDownloadPath(DownloadActivity.this); - } - - String fName = name.getText().toString().trim(); - - File f = new File(location, fName); - if (f.exists()) { - Toast.makeText(DownloadActivity.this, R.string.msg_exists, Toast.LENGTH_SHORT).show(); - } else { - DownloadManagerService.startMission( - DownloadActivity.this, - getIntent().getData().toString(), location, fName, - audioButton.isChecked(), threads.getProgress() + 1); - mFragment.notifyChange(); - - mPrefs.edit().putInt(THREADS, threads.getProgress() + 1).apply(); - mPendingUrl = null; - dialog.dismiss(); - } - - return true; - } else { - return false; - } - } - }); - - } - - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - - } - public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); @@ -229,9 +72,7 @@ public class DownloadActivity extends AppCompatActivity implements AdapterView.O @Override public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - - switch (id) { + switch (item.getItemId()) { case android.R.id.home: { onBackPressed(); return true; diff --git a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java index 9727ffb69..81d23a0ae 100755 --- a/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java +++ b/app/src/main/java/us/shandian/giga/service/DownloadManagerService.java @@ -89,30 +89,22 @@ public class DownloadManagerService extends Service { } } - Intent i = new Intent(); - i.setAction(Intent.ACTION_MAIN); - i.setClass(this, DownloadActivity.class); + Intent openDownloadListIntent = new Intent(this, DownloadActivity.class) + .setAction(Intent.ACTION_MAIN); + + PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, + openDownloadListIntent, + PendingIntent.FLAG_UPDATE_CURRENT); Drawable icon = ContextCompat.getDrawable(this, R.mipmap.ic_launcher); Builder builder = new Builder(this) - .setContentIntent(PendingIntent.getActivity(this, 0, i, 0)) + .setContentIntent(pendingIntent) .setSmallIcon(android.R.drawable.stat_sys_download) .setLargeIcon(((BitmapDrawable) icon).getBitmap()) .setContentTitle(getString(R.string.msg_running)) .setContentText(getString(R.string.msg_running_detail)); - PendingIntent pendingIntent = - PendingIntent.getActivity( - this, - 0, - new Intent(this, DownloadActivity.class) - .setAction(DownloadActivity.INTENT_LIST), - PendingIntent.FLAG_UPDATE_CURRENT - ); - - builder.setContentIntent(pendingIntent); - mNotification = builder.build(); HandlerThread thread = new HandlerThread("ServiceMessenger"); diff --git a/app/src/main/java/us/shandian/giga/util/CrashHandler.java b/app/src/main/java/us/shandian/giga/util/CrashHandler.java deleted file mode 100644 index 66baf6f59..000000000 --- a/app/src/main/java/us/shandian/giga/util/CrashHandler.java +++ /dev/null @@ -1,84 +0,0 @@ -package us.shandian.giga.util; - -import android.content.Context; -import android.content.pm.PackageInfo; -import android.os.Build; -import android.os.Environment; - -import java.io.File; -import java.io.PrintWriter; - -//todo: replace this by using the internal crash handler of newpipe -public class CrashHandler implements Thread.UncaughtExceptionHandler { - public static final String CRASH_DIR = Environment.getExternalStorageDirectory().getPath() + "/GigaCrash/"; - public static final String CRASH_LOG = CRASH_DIR + "last_crash.log"; - public static final String CRASH_TAG = CRASH_DIR + ".crashed"; - - private static String ANDROID = Build.VERSION.RELEASE; - private static String MODEL = Build.MODEL; - private static String MANUFACTURER = Build.MANUFACTURER; - - public static String VERSION = "Unknown"; - - private Thread.UncaughtExceptionHandler mPrevious; - - public static void init(Context context) { - try { - PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); - VERSION = info.versionName + info.versionCode; - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public static void register() { - new CrashHandler(); - } - - private CrashHandler() { - mPrevious = Thread.currentThread().getUncaughtExceptionHandler(); - Thread.currentThread().setUncaughtExceptionHandler(this); - } - - @Override - public void uncaughtException(Thread thread, Throwable throwable) { - File f = new File(CRASH_LOG); - if (f.exists()) { - f.delete(); - } else { - try { - new File(CRASH_DIR).mkdirs(); - f.createNewFile(); - } catch (Exception e) { - return; - } - } - - PrintWriter p; - try { - p = new PrintWriter(f); - } catch (Exception e) { - return; - } - - p.write("Android Version: " + ANDROID + "\n"); - p.write("Device Model: " + MODEL + "\n"); - p.write("Device Manufacturer: " + MANUFACTURER + "\n"); - p.write("App Version: " + VERSION + "\n"); - p.write("*********************\n"); - throwable.printStackTrace(p); - - p.close(); - - try { - new File(CRASH_TAG).createNewFile(); - } catch (Exception e) { - return; - } - - if (mPrevious != null) { - mPrevious.uncaughtException(thread, throwable); - } - } -} -