Skip to content

Commit 2cc1dac

Browse files
CopilotTomTasche
andcommitted
Add COMMON_TYPES activity alias and update MainActivity logic
Co-authored-by: TomTasche <128734+TomTasche@users.noreply.github.com>
1 parent 861b0c4 commit 2cc1dac

3 files changed

Lines changed: 318 additions & 8 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,289 @@
318318
<data android:pathPattern=".*\\.odg" />
319319
</intent-filter>
320320
</activity-alias>
321+
<activity-alias
322+
android:name="at.tomtasche.reader.ui.activity.MainActivity.COMMON_TYPES"
323+
android:exported="true"
324+
android:label="@string/app_title"
325+
android:targetActivity="at.tomtasche.reader.ui.activity.MainActivity"
326+
tools:ignore="AppLinkUrlError">
327+
<!-- PDF files -->
328+
<intent-filter>
329+
<action android:name="android.intent.action.VIEW" />
330+
331+
<category android:name="android.intent.category.DEFAULT" />
332+
<category android:name="android.intent.category.BROWSABLE" />
333+
334+
<data android:mimeType="application/pdf" />
335+
</intent-filter>
336+
<intent-filter>
337+
<action android:name="android.intent.action.VIEW" />
338+
339+
<category android:name="android.intent.category.BROWSABLE" />
340+
<category android:name="android.intent.category.DEFAULT" />
341+
342+
<data android:scheme="content" />
343+
<data android:scheme="file" />
344+
<data android:host="*" />
345+
<data android:pathPattern=".*\\.pdf" />
346+
<data android:pathPattern=".*\\..*\\.pdf" />
347+
<data android:pathPattern=".*\\..*\\..*\\.pdf" />
348+
<data android:pathPattern=".*\\..*\\..*\\..*\\.pdf" />
349+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.pdf" />
350+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.pdf" />
351+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.pdf" />
352+
</intent-filter>
353+
<intent-filter>
354+
<action android:name="android.intent.action.VIEW" />
355+
356+
<category android:name="android.intent.category.BROWSABLE" />
357+
<category android:name="android.intent.category.DEFAULT" />
358+
359+
<data android:mimeType="*/*" />
360+
<data android:scheme="content" />
361+
<data android:scheme="file" />
362+
<data android:host="*" />
363+
<data android:pathPattern=".*\\.pdf" />
364+
<data android:pathPattern=".*\\..*\\.pdf" />
365+
<data android:pathPattern=".*\\..*\\..*\\.pdf" />
366+
<data android:pathPattern=".*\\..*\\..*\\..*\\.pdf" />
367+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.pdf" />
368+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.pdf" />
369+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.pdf" />
370+
</intent-filter>
371+
<!-- Microsoft Office DOCX files -->
372+
<intent-filter>
373+
<action android:name="android.intent.action.VIEW" />
374+
375+
<category android:name="android.intent.category.DEFAULT" />
376+
<category android:name="android.intent.category.BROWSABLE" />
377+
378+
<data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
379+
</intent-filter>
380+
<intent-filter>
381+
<action android:name="android.intent.action.VIEW" />
382+
383+
<category android:name="android.intent.category.BROWSABLE" />
384+
<category android:name="android.intent.category.DEFAULT" />
385+
386+
<data android:scheme="content" />
387+
<data android:scheme="file" />
388+
<data android:host="*" />
389+
<data android:pathPattern=".*\\.docx" />
390+
<data android:pathPattern=".*\\..*\\.docx" />
391+
<data android:pathPattern=".*\\..*\\..*\\.docx" />
392+
<data android:pathPattern=".*\\..*\\..*\\..*\\.docx" />
393+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.docx" />
394+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.docx" />
395+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.docx" />
396+
</intent-filter>
397+
<intent-filter>
398+
<action android:name="android.intent.action.VIEW" />
399+
400+
<category android:name="android.intent.category.BROWSABLE" />
401+
<category android:name="android.intent.category.DEFAULT" />
402+
403+
<data android:mimeType="*/*" />
404+
<data android:scheme="content" />
405+
<data android:scheme="file" />
406+
<data android:host="*" />
407+
<data android:pathPattern=".*\\.docx" />
408+
<data android:pathPattern=".*\\..*\\.docx" />
409+
<data android:pathPattern=".*\\..*\\..*\\.docx" />
410+
<data android:pathPattern=".*\\..*\\..*\\..*\\.docx" />
411+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.docx" />
412+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.docx" />
413+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.docx" />
414+
</intent-filter>
415+
<!-- Microsoft Office PPTX files -->
416+
<intent-filter>
417+
<action android:name="android.intent.action.VIEW" />
418+
419+
<category android:name="android.intent.category.DEFAULT" />
420+
<category android:name="android.intent.category.BROWSABLE" />
421+
422+
<data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
423+
</intent-filter>
424+
<intent-filter>
425+
<action android:name="android.intent.action.VIEW" />
426+
427+
<category android:name="android.intent.category.BROWSABLE" />
428+
<category android:name="android.intent.category.DEFAULT" />
429+
430+
<data android:scheme="content" />
431+
<data android:scheme="file" />
432+
<data android:host="*" />
433+
<data android:pathPattern=".*\\.pptx" />
434+
<data android:pathPattern=".*\\..*\\.pptx" />
435+
<data android:pathPattern=".*\\..*\\..*\\.pptx" />
436+
<data android:pathPattern=".*\\..*\\..*\\..*\\.pptx" />
437+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.pptx" />
438+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.pptx" />
439+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.pptx" />
440+
</intent-filter>
441+
<intent-filter>
442+
<action android:name="android.intent.action.VIEW" />
443+
444+
<category android:name="android.intent.category.BROWSABLE" />
445+
<category android:name="android.intent.category.DEFAULT" />
446+
447+
<data android:mimeType="*/*" />
448+
<data android:scheme="content" />
449+
<data android:scheme="file" />
450+
<data android:host="*" />
451+
<data android:pathPattern=".*\\.pptx" />
452+
<data android:pathPattern=".*\\..*\\.pptx" />
453+
<data android:pathPattern=".*\\..*\\..*\\.pptx" />
454+
<data android:pathPattern=".*\\..*\\..*\\..*\\.pptx" />
455+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.pptx" />
456+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.pptx" />
457+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.pptx" />
458+
</intent-filter>
459+
<!-- Microsoft Office XLSX files -->
460+
<intent-filter>
461+
<action android:name="android.intent.action.VIEW" />
462+
463+
<category android:name="android.intent.category.DEFAULT" />
464+
<category android:name="android.intent.category.BROWSABLE" />
465+
466+
<data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
467+
</intent-filter>
468+
<intent-filter>
469+
<action android:name="android.intent.action.VIEW" />
470+
471+
<category android:name="android.intent.category.BROWSABLE" />
472+
<category android:name="android.intent.category.DEFAULT" />
473+
474+
<data android:scheme="content" />
475+
<data android:scheme="file" />
476+
<data android:host="*" />
477+
<data android:pathPattern=".*\\.xlsx" />
478+
<data android:pathPattern=".*\\..*\\.xlsx" />
479+
<data android:pathPattern=".*\\..*\\..*\\.xlsx" />
480+
<data android:pathPattern=".*\\..*\\..*\\..*\\.xlsx" />
481+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.xlsx" />
482+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.xlsx" />
483+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.xlsx" />
484+
</intent-filter>
485+
<intent-filter>
486+
<action android:name="android.intent.action.VIEW" />
487+
488+
<category android:name="android.intent.category.BROWSABLE" />
489+
<category android:name="android.intent.category.DEFAULT" />
490+
491+
<data android:mimeType="*/*" />
492+
<data android:scheme="content" />
493+
<data android:scheme="file" />
494+
<data android:host="*" />
495+
<data android:pathPattern=".*\\.xlsx" />
496+
<data android:pathPattern=".*\\..*\\.xlsx" />
497+
<data android:pathPattern=".*\\..*\\..*\\.xlsx" />
498+
<data android:pathPattern=".*\\..*\\..*\\..*\\.xlsx" />
499+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.xlsx" />
500+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.xlsx" />
501+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.xlsx" />
502+
</intent-filter>
503+
<!-- OpenDocument formats - copy from STRICT_CATCH -->
504+
<intent-filter>
505+
<action android:name="android.intent.action.VIEW" />
506+
507+
<category android:name="android.intent.category.DEFAULT" />
508+
<category android:name="android.intent.category.BROWSABLE" />
509+
510+
<data android:mimeType="application/vnd.oasis.opendocument.text" />
511+
<data android:mimeType="application/vnd.oasis.opendocument.text-template" />
512+
<data android:mimeType="application/vnd.oasis.opendocument.spreadsheet" />
513+
<data android:mimeType="application/vnd.oasis.opendocument.spreadsheet-template" />
514+
<data android:mimeType="application/vnd.oasis.opendocument.presentation" />
515+
<data android:mimeType="application/vnd.oasis.opendocument.presentation-template" />
516+
<data android:mimeType="application/octet-stream" />
517+
</intent-filter>
518+
<intent-filter>
519+
<action android:name="android.intent.action.VIEW" />
520+
521+
<category android:name="android.intent.category.BROWSABLE" />
522+
<category android:name="android.intent.category.DEFAULT" />
523+
524+
<data android:scheme="content" />
525+
<data android:scheme="file" />
526+
<data android:host="*" />
527+
<data android:pathPattern=".*\\.odt" />
528+
<data android:pathPattern=".*\\..*\\.odt" />
529+
<data android:pathPattern=".*\\..*\\..*\\.odt" />
530+
<data android:pathPattern=".*\\..*\\..*\\..*\\.odt" />
531+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.odt" />
532+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.odt" />
533+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.odt" />
534+
<data android:pathPattern=".*\\.ods" />
535+
<data android:pathPattern=".*\\..*\\.ods" />
536+
<data android:pathPattern=".*\\..*\\..*\\.ods" />
537+
<data android:pathPattern=".*\\..*\\..*\\..*\\.ods" />
538+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ods" />
539+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ods" />
540+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.ods" />
541+
<data android:pathPattern=".*\\.odp" />
542+
<data android:pathPattern=".*\\..*\\.odp" />
543+
<data android:pathPattern=".*\\..*\\..*\\.odp" />
544+
<data android:pathPattern=".*\\..*\\..*\\..*\\.odp" />
545+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.odp" />
546+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.odp" />
547+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.odp" />
548+
<data android:pathPattern=".*\\.odg" />
549+
<data android:pathPattern=".*\\..*\\.odg" />
550+
<data android:pathPattern=".*\\..*\\..*\\.odg" />
551+
<data android:pathPattern=".*\\..*\\..*\\..*\\.odg" />
552+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.odg" />
553+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.odg" />
554+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.odg" />
555+
<data android:pathPattern=".*\\.odt" />
556+
<data android:pathPattern=".*\\.ods" />
557+
<data android:pathPattern=".*\\.odp" />
558+
<data android:pathPattern=".*\\.odg" />
559+
</intent-filter>
560+
<intent-filter>
561+
<action android:name="android.intent.action.VIEW" />
562+
563+
<category android:name="android.intent.category.BROWSABLE" />
564+
<category android:name="android.intent.category.DEFAULT" />
565+
566+
<data android:mimeType="*/*" />
567+
<data android:scheme="content" />
568+
<data android:scheme="file" />
569+
<data android:host="*" />
570+
<data android:pathPattern=".*\\.odt" />
571+
<data android:pathPattern=".*\\..*\\.odt" />
572+
<data android:pathPattern=".*\\..*\\..*\\.odt" />
573+
<data android:pathPattern=".*\\..*\\..*\\..*\\.odt" />
574+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.odt" />
575+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.odt" />
576+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.odt" />
577+
<data android:pathPattern=".*\\.ods" />
578+
<data android:pathPattern=".*\\..*\\.ods" />
579+
<data android:pathPattern=".*\\..*\\..*\\.ods" />
580+
<data android:pathPattern=".*\\..*\\..*\\..*\\.ods" />
581+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ods" />
582+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.ods" />
583+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.ods" />
584+
<data android:pathPattern=".*\\.odp" />
585+
<data android:pathPattern=".*\\..*\\.odp" />
586+
<data android:pathPattern=".*\\..*\\..*\\.odp" />
587+
<data android:pathPattern=".*\\..*\\..*\\..*\\.odp" />
588+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.odp" />
589+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.odp" />
590+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.odp" />
591+
<data android:pathPattern=".*\\.odg" />
592+
<data android:pathPattern=".*\\..*\\.odg" />
593+
<data android:pathPattern=".*\\..*\\..*\\.odg" />
594+
<data android:pathPattern=".*\\..*\\..*\\..*\\.odg" />
595+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.odg" />
596+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.odg" />
597+
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.odg" />
598+
<data android:pathPattern=".*\\.odt" />
599+
<data android:pathPattern=".*\\.ods" />
600+
<data android:pathPattern=".*\\.odp" />
601+
<data android:pathPattern=".*\\.odg" />
602+
</intent-filter>
603+
</activity-alias>
321604

322605
<activity
323606
android:name="com.google.android.gms.ads.AdActivity"

app/src/main/java/at/tomtasche/reader/ui/activity/MainActivity.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -218,27 +218,54 @@ protected void onStart() {
218218

219219
private void initializeCatchAllSwitch() {
220220
ComponentName catchAllComponent = new ComponentName(this, "at.tomtasche.reader.ui.activity.MainActivity.CATCH_ALL");
221+
ComponentName commonTypesComponent = new ComponentName(this, "at.tomtasche.reader.ui.activity.MainActivity.COMMON_TYPES");
221222
ComponentName strictCatchComponent = new ComponentName(this, "at.tomtasche.reader.ui.activity.MainActivity.STRICT_CATCH");
222223

224+
// Determine current mode based on enabled components
223225
boolean isCatchAllEnabled = getPackageManager().getComponentEnabledSetting(catchAllComponent) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
226+
boolean isCommonTypesEnabled = getPackageManager().getComponentEnabledSetting(commonTypesComponent) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
227+
228+
// Default to common types if this is first run (all are disabled)
229+
if (!isCatchAllEnabled && !isCommonTypesEnabled) {
230+
isCommonTypesEnabled = true;
231+
}
224232

225-
// retoggle components for users upgrading to latest version of app
226-
toggleComponent(catchAllComponent, isCatchAllEnabled);
227-
toggleComponent(strictCatchComponent, !isCatchAllEnabled);
233+
// Ensure only one mode is enabled
234+
toggleComponent(catchAllComponent, isCatchAllEnabled && !isCommonTypesEnabled);
235+
toggleComponent(commonTypesComponent, isCommonTypesEnabled && !isCatchAllEnabled);
236+
toggleComponent(strictCatchComponent, !isCatchAllEnabled && !isCommonTypesEnabled);
228237

229238
SwitchCompat catchAllSwitch = findViewById(R.id.landing_catch_all);
230239

231240
catchAllSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
232241
@Override
233242
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
234-
toggleComponent(catchAllComponent, isChecked);
235-
toggleComponent(strictCatchComponent, !isChecked);
243+
if (isChecked) {
244+
// Switch to common types mode
245+
toggleComponent(catchAllComponent, false);
246+
toggleComponent(commonTypesComponent, true);
247+
toggleComponent(strictCatchComponent, false);
248+
} else {
249+
// Switch to strict mode
250+
toggleComponent(catchAllComponent, false);
251+
toggleComponent(commonTypesComponent, false);
252+
toggleComponent(strictCatchComponent, true);
253+
}
236254
}
237255
});
238256

239-
catchAllSwitch.setChecked(isCatchAllEnabled);
257+
// Set switch state: checked if common types is enabled, unchecked if strict is enabled
258+
catchAllSwitch.setChecked(isCommonTypesEnabled);
240259

241-
analyticsManager.report(isCatchAllEnabled ? "catch_all_enabled" : "catch_all_disabled");
260+
String analyticsEvent;
261+
if (isCatchAllEnabled) {
262+
analyticsEvent = "catch_all_enabled";
263+
} else if (isCommonTypesEnabled) {
264+
analyticsEvent = "common_types_enabled";
265+
} else {
266+
analyticsEvent = "strict_enabled";
267+
}
268+
analyticsManager.report(analyticsEvent);
242269
}
243270

244271
private void toggleComponent(ComponentName component, boolean enabled) {

0 commit comments

Comments
 (0)