From d772e54afec04ff2230f4cc997cdceb1cb47534a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C3=87erri?= <64997243+deniscerri@users.noreply.github.com> Date: Mon, 26 Dec 2022 23:24:28 +0100 Subject: [PATCH] breadcrumbs #2 --- app/src/main/AndroidManifest.xml | 9 ++- .../main/java/com/deniscerri/ytdlnis/App.java | 3 - .../com/deniscerri/ytdlnis/MainActivity.java | 63 +++++++++++++++---- .../ytdlnis/page/CustomCommandActivity.java | 6 +- .../receiver/NotificationReceiver.java | 2 - .../ytdlnis/util/NotificationUtil.java | 2 +- .../res/layout/activity_custom_command.xml | 2 +- app/src/main/res/values/strings.xml | 3 + build.gradle | 2 +- 9 files changed, 68 insertions(+), 24 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b41dd5c1..ec38bb68 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppDefaultTheme" > - + @@ -35,7 +36,8 @@ + android:parentActivityName=".MainActivity" + android:exported="true"> @@ -44,7 +46,8 @@ + android:parentActivityName=".MainActivity" + android:exported="true"> diff --git a/app/src/main/java/com/deniscerri/ytdlnis/App.java b/app/src/main/java/com/deniscerri/ytdlnis/App.java index 16a862c0..0edffec8 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/App.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/App.java @@ -3,16 +3,13 @@ package com.deniscerri.ytdlnis; import android.app.Application; import android.util.Log; import android.widget.Toast; - import androidx.preference.PreferenceManager; - import com.deniscerri.ytdlnis.util.NotificationUtil; import com.google.android.material.color.DynamicColors; import com.yausername.aria2c.Aria2c; import com.yausername.ffmpeg.FFmpeg; import com.yausername.youtubedl_android.YoutubeDL; import com.yausername.youtubedl_android.YoutubeDLException; - import io.reactivex.Completable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.exceptions.UndeliverableException; diff --git a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.java b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.java index b0b03f0b..517d7178 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/MainActivity.java @@ -1,5 +1,6 @@ package com.deniscerri.ytdlnis; +import android.Manifest; import android.app.Activity; import android.app.ActivityManager; import android.content.ComponentName; @@ -7,13 +8,15 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; +import android.provider.Settings; import android.util.Log; -import android.widget.Toast; - +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -26,25 +29,18 @@ import com.deniscerri.ytdlnis.page.MoreFragment; import com.deniscerri.ytdlnis.page.settings.SettingsActivity; import com.deniscerri.ytdlnis.service.IDownloaderListener; import com.deniscerri.ytdlnis.service.IDownloaderService; -import com.deniscerri.ytdlnis.util.NotificationUtil; import com.deniscerri.ytdlnis.util.UpdateUtil; - +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; import java.util.LinkedList; import java.util.List; -import java.util.Locale; - public class MainActivity extends AppCompatActivity{ @@ -65,7 +61,7 @@ public class MainActivity extends AppCompatActivity{ private ArrayList listeners = null; private IDownloaderService iDownloaderService; - private final ServiceConnection serviceConnection = new ServiceConnection() { + public final ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { downloaderService = ((DownloaderService.LocalBinder) service).getService(); @@ -137,6 +133,9 @@ public class MainActivity extends AppCompatActivity{ } return true; }); + + askPermissions(); + Intent intent = getIntent(); handleIntents(intent); } @@ -303,4 +302,46 @@ public class MainActivity extends AppCompatActivity{ } } + + private void askPermissions(){ + if(!checkFilePermission()){ + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + Log.e(TAG, String.valueOf(grantResults[0])); + for(int i = 0; i < permissions.length; i++){ + if(grantResults[i] == PackageManager.PERMISSION_DENIED){ + createPermissionRequestDialog(); + } + } + } + + private void exit(){ + this.finishAffinity(); + System.exit(0); + } + + private boolean checkFilePermission(){ + return ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) + == PackageManager.PERMISSION_GRANTED; + } + + private void createPermissionRequestDialog(){ + MaterialAlertDialogBuilder dialog = new MaterialAlertDialogBuilder(this); + dialog.setTitle(getString(R.string.warning)); + dialog.setMessage(getString(R.string.request_permission_desc)); + dialog.setOnCancelListener(dialogInterface -> exit()); + dialog.setNegativeButton(getString(R.string.exit_app), (dialogInterface, i) -> exit()); + dialog.setPositiveButton(getString(R.string.ok), (dialogInterface, i) -> { + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", getPackageName(), null)); + startActivity(intent); + System.exit(0); + }); + dialog.show(); + } + } diff --git a/app/src/main/java/com/deniscerri/ytdlnis/page/CustomCommandActivity.java b/app/src/main/java/com/deniscerri/ytdlnis/page/CustomCommandActivity.java index e3e47617..e505a2e3 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/page/CustomCommandActivity.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/page/CustomCommandActivity.java @@ -11,6 +11,7 @@ import android.os.Bundle; import android.os.IBinder; import android.text.method.ScrollingMovementMethod; import android.util.Log; +import android.view.View; import android.widget.EditText; import android.widget.ScrollView; import android.widget.TextView; @@ -75,8 +76,9 @@ public class CustomCommandActivity extends AppCompatActivity { } public void onDownloadProgress(DownloadInfo info) { - output.append("\n" + info.getOutputLine()); - scrollView.scrollTo(0, scrollView.getMaxScrollAmount()); + output.append("\n" + info.getOutputLine() + "\n"); + output.scrollTo(0, output.getHeight()); + scrollView.fullScroll(View.FOCUS_DOWN); } public void onDownloadError(DownloadInfo info) { diff --git a/app/src/main/java/com/deniscerri/ytdlnis/receiver/NotificationReceiver.java b/app/src/main/java/com/deniscerri/ytdlnis/receiver/NotificationReceiver.java index 800aa158..7f48b3c8 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/receiver/NotificationReceiver.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/receiver/NotificationReceiver.java @@ -7,10 +7,8 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import com.deniscerri.ytdlnis.DownloaderService; -import com.deniscerri.ytdlnis.MainActivity; import com.deniscerri.ytdlnis.service.IDownloaderListener; import com.deniscerri.ytdlnis.service.IDownloaderService; -import com.deniscerri.ytdlnis.util.NotificationUtil; import java.util.ArrayList; diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/NotificationUtil.java b/app/src/main/java/com/deniscerri/ytdlnis/util/NotificationUtil.java index 868e6520..bfee2cae 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/NotificationUtil.java +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/NotificationUtil.java @@ -78,7 +78,7 @@ public class NotificationUtil { .setContentIntent(pendingIntent) .setForegroundServiceBehavior(NotificationCompat.FOREGROUND_SERVICE_IMMEDIATE) .clearActions() - .addAction(0, context.getString(R.string.cancel), cancelNotificationPendingIntent) + //.addAction(0, context.getString(R.string.cancel), cancelNotificationPendingIntent) .build(); return notification; diff --git a/app/src/main/res/layout/activity_custom_command.xml b/app/src/main/res/layout/activity_custom_command.xml index 2881f80e..b33e759f 100644 --- a/app/src/main/res/layout/activity_custom_command.xml +++ b/app/src/main/res/layout/activity_custom_command.xml @@ -35,7 +35,7 @@ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a9c68985..1294b68e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -136,4 +136,7 @@ Delete the file from the device Delete the files from the device Loaded. + This app needs File Permissions to save downloads on the device + Exit App + Warning \ No newline at end of file diff --git a/build.gradle b/build.gradle index 1072e66e..4402be6e 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { def versionMajor = 1 def versionMinor = 4 -def versionPatch = 2 +def versionPatch = 3 def versionBuild = 0 // bump for dogfood builds, public betas, etc. ext {