mirror of
https://github.com/TrianguloY/UrlChecker.git
synced 2024-09-19 20:02:16 +02:00
remove deprecated android fragment class
This commit is contained in:
parent
4c723b8bff
commit
84144a8665
@ -10,6 +10,8 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import com.trianguloy.urlchecker.R;
|
||||
import com.trianguloy.urlchecker.fragments.ActivityResultInjector;
|
||||
import com.trianguloy.urlchecker.fragments.BrowserButtonsFragment;
|
||||
import com.trianguloy.urlchecker.utilities.AndroidSettings;
|
||||
import com.trianguloy.urlchecker.utilities.AndroidUtils;
|
||||
import com.trianguloy.urlchecker.utilities.PackageUtils;
|
||||
@ -30,6 +32,7 @@ public class SettingsActivity extends Activity {
|
||||
setTitle(R.string.a_settings);
|
||||
AndroidUtils.configureUp(this);
|
||||
|
||||
configureBrowserButtons();
|
||||
configureDayNight();
|
||||
configureLocale();
|
||||
}
|
||||
@ -45,6 +48,21 @@ public class SettingsActivity extends Activity {
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
/* ------------------- configure browser ------------------- */
|
||||
|
||||
private final ActivityResultInjector activityResultInjector = new ActivityResultInjector();
|
||||
private final BrowserButtonsFragment browserButtons = new BrowserButtonsFragment(this, activityResultInjector);
|
||||
|
||||
private void configureBrowserButtons() {
|
||||
browserButtons.onInitialize(findViewById(browserButtons.getLayoutId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (!activityResultInjector.onActivityResult(requestCode, resultCode, data))
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
/* ------------------- day/night ------------------- */
|
||||
|
||||
/**
|
||||
@ -101,7 +119,7 @@ public class SettingsActivity extends Activity {
|
||||
|
||||
/* ------------------- tutorial ------------------- */
|
||||
|
||||
public void openTutorial(View view){
|
||||
public void openTutorial(View view) {
|
||||
PackageUtils.startActivity(new Intent(this, TutorialActivity.class), R.string.toast_noApp, this);
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ import android.widget.TextView;
|
||||
import android.widget.ViewFlipper;
|
||||
|
||||
import com.trianguloy.urlchecker.R;
|
||||
import com.trianguloy.urlchecker.fragments.ActivityResultInjector;
|
||||
import com.trianguloy.urlchecker.fragments.BrowserButtonsFragment;
|
||||
import com.trianguloy.urlchecker.utilities.AndroidSettings;
|
||||
import com.trianguloy.urlchecker.utilities.GenericPref;
|
||||
import com.trianguloy.urlchecker.utilities.PackageUtils;
|
||||
@ -43,10 +45,26 @@ public class TutorialActivity extends Activity {
|
||||
nextButton = findViewById(R.id.bNext);
|
||||
pageIndexText = findViewById(R.id.pageIndex);
|
||||
|
||||
configureBrowserButtons();
|
||||
updateButtons();
|
||||
|
||||
}
|
||||
|
||||
/* ------------------- browser fragment ------------------- */
|
||||
|
||||
private final ActivityResultInjector activityResultInjector = new ActivityResultInjector();
|
||||
private final BrowserButtonsFragment browserButtons = new BrowserButtonsFragment(this, activityResultInjector);
|
||||
|
||||
private void configureBrowserButtons() {
|
||||
browserButtons.onInitialize(findViewById(browserButtons.getLayoutId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (!activityResultInjector.onActivityResult(requestCode, resultCode, data))
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
/* ------------------- buttons ------------------- */
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,64 @@
|
||||
package com.trianguloy.urlchecker.fragments;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
|
||||
import com.trianguloy.urlchecker.utilities.AndroidUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* An injector to allow registering for activityResult.
|
||||
* Alternative to using the deprecate android fragments (and without using the huge compatibility library)
|
||||
*/
|
||||
public class ActivityResultInjector {
|
||||
private static final int RESERVED = 123; // just in case, registered listeners will have requestCode >= this
|
||||
private final List<Listener> listeners = new ArrayList<>();
|
||||
|
||||
/* ------------------- client use ------------------- */
|
||||
|
||||
interface Listener {
|
||||
/**
|
||||
* Called when the event fires for a particular registrar
|
||||
*/
|
||||
void onActivityResult(int resultCode, Intent data);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this to register an onActivityResult listener. Returns the requestCode you must use in the startActivityForResult call
|
||||
*/
|
||||
public int register(Listener listener) {
|
||||
listeners.add(listener);
|
||||
return RESERVED + listeners.size() - 1;
|
||||
}
|
||||
|
||||
/* ------------------- activity use ------------------- */
|
||||
|
||||
/**
|
||||
* An activity must use this as:
|
||||
* <pre>
|
||||
* @Override
|
||||
* public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
* if (!activityResultInjector.onActivityResult(requestCode, resultCode, data))
|
||||
* super.onActivityResult(requestCode, resultCode, data);
|
||||
* }
|
||||
* </pre>
|
||||
*/
|
||||
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
var index = requestCode - RESERVED;
|
||||
if (index < 0) {
|
||||
// external
|
||||
Log.d("ACTIVITY_RESULT", "External request code (" + requestCode + "), consider using ActivityResultInjector");
|
||||
return false;
|
||||
}
|
||||
if (index >= listeners.size()) {
|
||||
// external?
|
||||
AndroidUtils.assertError("Invalid request code (" + requestCode + "), consider using ActivityResultInjector or a requestCode less than " + RESERVED);
|
||||
return false;
|
||||
}
|
||||
listeners.get(index).onActivityResult(resultCode, data);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -2,33 +2,37 @@ package com.trianguloy.urlchecker.fragments;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.app.role.RoleManager;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
||||
|
||||
import com.trianguloy.urlchecker.R;
|
||||
import com.trianguloy.urlchecker.utilities.PackageUtils;
|
||||
|
||||
public class BrowserButtonsFragment extends Fragment {
|
||||
public static final int REQUEST_CODE = 2;
|
||||
public class BrowserButtonsFragment implements Fragment, ActivityResultInjector.Listener {
|
||||
private final Activity cntx;
|
||||
private final int requestCode;
|
||||
private RoleManager roleManager;
|
||||
|
||||
public BrowserButtonsFragment(Activity cntx, ActivityResultInjector activityResultInjector) {
|
||||
this.cntx = cntx;
|
||||
requestCode = activityResultInjector.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_browser_buttons, container, false);
|
||||
configureBrowserButtons(view);
|
||||
return view;
|
||||
public int getLayoutId() {
|
||||
return R.id.browser_buttons;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitialize(View views) {
|
||||
configureBrowserButtons(views);
|
||||
}
|
||||
|
||||
// adapted from https://stackoverflow.com/a/74108806
|
||||
@ -44,7 +48,7 @@ public class BrowserButtonsFragment extends Fragment {
|
||||
|
||||
boolean hide = true;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
roleManager = getActivity().getSystemService(RoleManager.class);
|
||||
roleManager = cntx.getSystemService(RoleManager.class);
|
||||
if (roleManager.isRoleAvailable(RoleManager.ROLE_BROWSER)) {
|
||||
hide = false;
|
||||
}
|
||||
@ -70,20 +74,15 @@ public class BrowserButtonsFragment extends Fragment {
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.Q)
|
||||
public void chooseBrowserPopup() {
|
||||
startActivityForResult(roleManager.createRequestRoleIntent(RoleManager.ROLE_BROWSER), REQUEST_CODE);
|
||||
cntx.startActivityForResult(roleManager.createRequestRoleIntent(RoleManager.ROLE_BROWSER), requestCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode != REQUEST_CODE) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
return;
|
||||
}
|
||||
|
||||
public void onActivityResult(int resultCode, Intent data) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
Toast.makeText(getActivity(), R.string.toast_defaultSet, Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(cntx, R.string.toast_defaultSet, Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
Toast.makeText(getActivity(), R.string.canceled, Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(cntx, R.string.canceled, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +104,7 @@ public class BrowserButtonsFragment extends Fragment {
|
||||
bundle
|
||||
);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
PackageUtils.startActivity(intent, R.string.toast_noApp, getActivity());
|
||||
PackageUtils.startActivity(intent, R.string.toast_noApp, cntx);
|
||||
}
|
||||
|
||||
// adapted from https://groups.google.com/g/androidscript/c/cLq7eiUVpig/m/RDraxFYQCgAJ
|
||||
@ -117,8 +116,8 @@ public class BrowserButtonsFragment extends Fragment {
|
||||
public void openAppLinks() {
|
||||
PackageUtils.startActivity(new Intent(
|
||||
Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS,
|
||||
Uri.parse("package:" + getActivity().getPackageName())
|
||||
), R.string.toast_noApp, getActivity());
|
||||
Uri.parse("package:" + cntx.getPackageName())
|
||||
), R.string.toast_noApp, cntx);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -127,9 +126,7 @@ public class BrowserButtonsFragment extends Fragment {
|
||||
public void openAppDetails() {
|
||||
PackageUtils.startActivity(new Intent(
|
||||
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
|
||||
Uri.parse("package:" + getActivity().getPackageName())
|
||||
), R.string.toast_noApp, getActivity());
|
||||
Uri.parse("package:" + cntx.getPackageName())
|
||||
), R.string.toast_noApp, cntx);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.trianguloy.urlchecker.utilities;
|
||||
package com.trianguloy.urlchecker.fragments;
|
||||
|
||||
import android.view.View;
|
||||
|
@ -3,7 +3,7 @@ package com.trianguloy.urlchecker.modules;
|
||||
import android.app.Activity;
|
||||
|
||||
import com.trianguloy.urlchecker.activities.ModulesActivity;
|
||||
import com.trianguloy.urlchecker.utilities.Fragment;
|
||||
import com.trianguloy.urlchecker.fragments.Fragment;
|
||||
|
||||
/**
|
||||
* Base class for a module configuration fragment
|
||||
|
@ -3,8 +3,8 @@ package com.trianguloy.urlchecker.modules;
|
||||
import android.app.Activity;
|
||||
|
||||
import com.trianguloy.urlchecker.dialogs.MainDialog;
|
||||
import com.trianguloy.urlchecker.fragments.Fragment;
|
||||
import com.trianguloy.urlchecker.url.UrlData;
|
||||
import com.trianguloy.urlchecker.utilities.Fragment;
|
||||
|
||||
/**
|
||||
* Base class for a module's dialog fragment.
|
||||
|
@ -29,12 +29,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/txt_openLinks" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/browser_buttons"
|
||||
class="com.trianguloy.urlchecker.fragments.BrowserButtonsFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:layout="@layout/fragment_browser_buttons" />
|
||||
<include layout="@layout/fragment_browser_buttons" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
@ -19,12 +19,12 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/imageButton"
|
||||
@ -45,40 +45,35 @@
|
||||
android:gravity="center"
|
||||
android:text="@string/tutorial_txt_intro" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView><ScrollView
|
||||
android:id="@+id/p2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/tutorial_txt_app" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/tutorial_txt_app" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/padding"
|
||||
android:gravity="center"
|
||||
android:text="@string/txt_openLinks" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/padding"
|
||||
android:gravity="center"
|
||||
android:text="@string/txt_openLinks" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/browser_buttons"
|
||||
class="com.trianguloy.urlchecker.fragments.BrowserButtonsFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools: layout="@layout/fragment_browser_buttons" />
|
||||
<TextView
|
||||
<include layout="@layout/fragment_browser_buttons" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/padding"
|
||||
@ -99,7 +94,7 @@
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</ScrollView><ScrollView
|
||||
</ScrollView><ScrollView
|
||||
android:id="@+id/p3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
Loading…
Reference in New Issue
Block a user