6
6
import android .content .pm .PackageManager ;
7
7
import android .content .res .Configuration ;
8
8
import android .net .Uri ;
9
+ import android .os .Build ;
9
10
import android .os .Bundle ;
10
11
import android .os .CountDownTimer ;
11
- import android .os .Handler ;
12
12
13
13
import androidx .activity .result .ActivityResultLauncher ;
14
14
import androidx .activity .result .contract .ActivityResultContracts ;
33
33
import androidx .appcompat .app .AppCompatActivity ;
34
34
import androidx .appcompat .widget .Toolbar ;
35
35
36
- import android .os .Looper ;
37
36
import android .text .method .LinkMovementMethod ;
38
37
import android .view .Menu ;
39
38
import android .view .MenuInflater ;
40
39
import android .view .MenuItem ;
40
+ import android .view .SubMenu ;
41
41
import android .view .View ;
42
42
import android .widget .Button ;
43
43
import android .widget .EditText ;
63
63
import java .util .concurrent .CompletableFuture ;
64
64
65
65
public class MainActivity extends AppCompatActivity implements NavigationView .OnNavigationItemSelectedListener {
66
- private boolean doubleBackToExitPressedOnce ;
67
66
68
67
private ViewFlipper viewFlipper ;
69
68
private EditText edtFileCompare ;
@@ -125,16 +124,27 @@ protected void onCreate(final Bundle savedInstanceState) {
125
124
viewFlipper .setDisplayedChild (flipperPosition );
126
125
127
126
if (flipperPosition > 1 ) {
128
- navigationView .setCheckedItem (navigationView .getMenu ().getItem (1 ).getSubMenu ().getItem (flipperPosition - 2 ).getItemId ());
127
+ final SubMenu menu = navigationView .getMenu ().getItem (1 ).getSubMenu ();
128
+ if (menu != null ) {
129
+ navigationView .setCheckedItem (menu .getItem (flipperPosition - 2 ).getItemId ());
130
+ }
129
131
} else {
130
- navigationView .setCheckedItem (navigationView .getMenu ().getItem (0 ).getSubMenu ().getItem (flipperPosition ).getItemId ());
132
+ final SubMenu menu = navigationView .getMenu ().getItem (0 ).getSubMenu ();
133
+ if (menu != null ) {
134
+ navigationView .setCheckedItem (menu .getItem (flipperPosition ).getItemId ());
135
+ }
131
136
}
132
137
133
138
if (!savedInstanceState .getBoolean ("KEEP_FILE" )) {
134
139
deleteTempFile ();
135
140
}
136
141
} else {
137
- navigationView .setCheckedItem (navigationView .getMenu ().getItem (0 ).getSubMenu ().getItem (0 ).getItemId ());
142
+ final SubMenu menu = navigationView .getMenu ().getItem (0 ).getSubMenu ();
143
+
144
+ if (menu != null ) {
145
+ navigationView .setCheckedItem (menu .getItem (0 ).getItemId ());
146
+ }
147
+
138
148
deleteTempFile ();
139
149
}
140
150
@@ -180,15 +190,10 @@ protected void onCreate(final Bundle savedInstanceState) {
180
190
*/
181
191
private void loadTheme () {
182
192
switch (settingsContainer .getTheme ()) {
183
- case "0" :
184
- AppCompatDelegate .setDefaultNightMode (AppCompatDelegate .MODE_NIGHT_NO );
185
- break ;
186
- case "1" :
187
- AppCompatDelegate .setDefaultNightMode (AppCompatDelegate .MODE_NIGHT_YES );
188
- break ;
189
- case "2" :
190
- AppCompatDelegate .setDefaultNightMode (AppCompatDelegate .MODE_NIGHT_FOLLOW_SYSTEM );
191
- break ;
193
+ case "0" -> AppCompatDelegate .setDefaultNightMode (AppCompatDelegate .MODE_NIGHT_NO );
194
+ case "1" -> AppCompatDelegate .setDefaultNightMode (AppCompatDelegate .MODE_NIGHT_YES );
195
+ case "2" ->
196
+ AppCompatDelegate .setDefaultNightMode (AppCompatDelegate .MODE_NIGHT_FOLLOW_SYSTEM );
192
197
}
193
198
}
194
199
@@ -309,10 +314,6 @@ protected void onPause() {
309
314
* @param savedInstance The Bundle that contains saved information
310
315
*/
311
316
private void loadFileHashContent (final Bundle savedInstance ) {
312
- if (ContextCompat .checkSelfPermission (MainActivity .this , Manifest .permission .READ_EXTERNAL_STORAGE ) != PackageManager .PERMISSION_GRANTED ) {
313
- ActivityCompat .requestPermissions (MainActivity .this , new String []{Manifest .permission .READ_EXTERNAL_STORAGE }, 0 );
314
- }
315
-
316
317
pgbFile = findViewById (R .id .PgbFile );
317
318
mRecyclerViewFile = findViewById (R .id .file_recycler );
318
319
mRecyclerViewFile .setHasFixedSize (true );
@@ -342,18 +343,8 @@ private void loadFileHashContent(final Bundle savedInstance) {
342
343
343
344
mRecyclerViewFile .setAdapter (mAdapterFile );
344
345
345
- btnOpenFile .setOnClickListener (v -> {
346
- if (ContextCompat .checkSelfPermission (MainActivity .this , Manifest .permission .READ_EXTERNAL_STORAGE ) != PackageManager .PERMISSION_GRANTED ) {
347
- ActivityCompat .requestPermissions (MainActivity .this , new String []{Manifest .permission .READ_EXTERNAL_STORAGE }, 0 );
348
- } else {
349
- final Intent intent = new Intent ()
350
- .setType ("*/*" )
351
- .setAction (Intent .ACTION_GET_CONTENT )
352
- .addCategory (Intent .CATEGORY_OPENABLE );
353
-
354
- activityResultLauncher .launch (Intent .createChooser (intent , getString (R .string .dialog_select_file )));
355
- }
356
- });
346
+ btnOpenFile .setOnClickListener (this ::onClickSelectFile );
347
+ edtFilePath .setOnClickListener (this ::onClickSelectFile );
357
348
358
349
btnGenerate .setOnClickListener (v -> {
359
350
if (fileLoading ) return ;
@@ -511,7 +502,7 @@ private void loadHelpContent() {
511
502
512
503
btnSupport .setOnClickListener (v -> new ShareCompat .IntentBuilder (MainActivity .this )
513
504
.setType ("message/rfc822" )
514
- .addEmailTo ("admin @codedead.com" )
505
+ .addEmailTo ("support @codedead.com" )
515
506
.setSubject ("DeadHash - Android" )
516
507
.setText ("" )
517
508
.setChooserTitle (R .string .text_send_mail )
@@ -557,24 +548,6 @@ protected void attachBaseContext(final Context base) {
557
548
super .attachBaseContext (LocaleHelper .onAttach (base ));
558
549
}
559
550
560
- @ Override
561
- public void onBackPressed () {
562
- final DrawerLayout drawer = findViewById (R .id .drawer_layout );
563
- if (drawer .isDrawerOpen (GravityCompat .START )) {
564
- drawer .closeDrawer (GravityCompat .START );
565
- } else {
566
- if (doubleBackToExitPressedOnce ) {
567
- super .onBackPressed ();
568
- return ;
569
- }
570
-
571
- this .doubleBackToExitPressedOnce = true ;
572
- Toast .makeText (this , R .string .toast_back_again , Toast .LENGTH_SHORT ).show ();
573
-
574
- new Handler (Looper .getMainLooper ()).postDelayed (() -> doubleBackToExitPressedOnce = false , 2000 );
575
- }
576
- }
577
-
578
551
@ Override
579
552
public boolean onNavigationItemSelected (@ NonNull final MenuItem item ) {
580
553
int page = 0 ;
@@ -594,4 +567,31 @@ public boolean onNavigationItemSelected(@NonNull final MenuItem item) {
594
567
drawer .closeDrawer (GravityCompat .START );
595
568
return true ;
596
569
}
570
+
571
+ private void onClickSelectFile (final View v ) {
572
+ if (ContextCompat .checkSelfPermission (MainActivity .this , Manifest .permission .READ_MEDIA_AUDIO ) != PackageManager .PERMISSION_GRANTED
573
+ || ContextCompat .checkSelfPermission (MainActivity .this , Manifest .permission .READ_MEDIA_IMAGES ) != PackageManager .PERMISSION_GRANTED
574
+ || ContextCompat .checkSelfPermission (MainActivity .this , Manifest .permission .READ_MEDIA_VIDEO ) != PackageManager .PERMISSION_GRANTED ) {
575
+ Toast .makeText (getApplicationContext (), R .string .toast_no_permissions , Toast .LENGTH_LONG ).show ();
576
+
577
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
578
+ ActivityCompat .requestPermissions (MainActivity .this , new String []{
579
+ Manifest .permission .READ_MEDIA_AUDIO ,
580
+ Manifest .permission .READ_MEDIA_IMAGES ,
581
+ Manifest .permission .READ_MEDIA_VIDEO
582
+ }, 0 );
583
+ } else {
584
+ ActivityCompat .requestPermissions (MainActivity .this , new String []{
585
+ Manifest .permission .READ_EXTERNAL_STORAGE
586
+ }, 0 );
587
+ }
588
+ } else {
589
+ final Intent intent = new Intent ()
590
+ .setType ("*/*" )
591
+ .setAction (Intent .ACTION_OPEN_DOCUMENT )
592
+ .addCategory (Intent .CATEGORY_OPENABLE );
593
+
594
+ activityResultLauncher .launch (Intent .createChooser (intent , getString (R .string .dialog_select_file )));
595
+ }
596
+ }
597
597
}
0 commit comments