Manage connectivity on no connection

pull/156/head
M66B 6 years ago
parent 31480d8713
commit 0e0386aa49

@ -482,12 +482,12 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
if (ex instanceof IllegalStateException) { if (ex instanceof IllegalStateException) {
Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG); Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG);
final Intent intent = ConnectionHelper.getSettingsIntent(context);
if (intent != null)
snackbar.setAction(R.string.title_fix, new View.OnClickListener() { snackbar.setAction(R.string.title_fix, new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
context.startActivity(intent); context.startActivity(
new Intent(context, ActivitySetup.class)
.putExtra("tab", "connection"));
} }
}); });
snackbar.show(); snackbar.show();

@ -5,7 +5,6 @@ import android.accounts.AccountManager;
import android.accounts.AuthenticatorException; import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException; import android.accounts.OperationCanceledException;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.Network; import android.net.Network;
@ -305,15 +304,4 @@ public class ConnectionHelper {
return Settings.System.getInt(context.getContentResolver(), return Settings.System.getInt(context.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) != 0; Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
} }
static Intent getSettingsIntent(Context context) {
Intent intent;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q)
intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
else
intent = new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
if (intent.resolveActivity(context.getPackageManager()) == null)
return null;
return intent;
}
} }

@ -344,12 +344,12 @@ public class FragmentFolders extends FragmentBase {
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
if (ex instanceof IllegalStateException) { if (ex instanceof IllegalStateException) {
Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG); Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG);
final Intent intent = ConnectionHelper.getSettingsIntent(getContext());
if (intent != null)
snackbar.setAction(R.string.title_fix, new View.OnClickListener() { snackbar.setAction(R.string.title_fix, new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
getContext().startActivity(intent); getContext().startActivity(
new Intent(getContext(), ActivitySetup.class)
.putExtra("tab", "connection"));
} }
}); });
snackbar.show(); snackbar.show();

@ -896,12 +896,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (ex instanceof IllegalStateException) { if (ex instanceof IllegalStateException) {
Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG); Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG);
final Intent intent = ConnectionHelper.getSettingsIntent(getContext());
if (intent != null)
snackbar.setAction(R.string.title_fix, new View.OnClickListener() { snackbar.setAction(R.string.title_fix, new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
getContext().startActivity(intent); getContext().startActivity(
new Intent(getContext(), ActivitySetup.class)
.putExtra("tab", "connection"));
} }
}); });
snackbar.show(); snackbar.show();
@ -2730,12 +2730,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED))
if (ex instanceof IllegalStateException) { if (ex instanceof IllegalStateException) {
Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG); Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG);
final Intent intent = ConnectionHelper.getSettingsIntent(getContext());
if (intent != null)
snackbar.setAction(R.string.title_fix, new View.OnClickListener() { snackbar.setAction(R.string.title_fix, new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
getContext().startActivity(intent); getContext().startActivity(
new Intent(getContext(), ActivitySetup.class)
.putExtra("tab", "connection"));
} }
}); });
snackbar.show(); snackbar.show();

@ -63,7 +63,9 @@ public class FragmentOptions extends FragmentBase {
tabLayout.setupWithViewPager(pager); tabLayout.setupWithViewPager(pager);
String tab = getActivity().getIntent().getStringExtra("tab"); String tab = getActivity().getIntent().getStringExtra("tab");
if ("display".equals(tab)) if ("connection".equals(tab))
pager.setCurrentItem(3);
else if ("display".equals(tab))
pager.setCurrentItem(4); pager.setCurrentItem(4);
} }

@ -26,7 +26,9 @@ import android.net.ConnectivityManager;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -121,8 +123,11 @@ public class FragmentOptionsConnection extends FragmentBase implements SharedPre
} }
}); });
final Intent manage = ConnectionHelper.getSettingsIntent(getContext()); final Intent manage = getIntentConnectivity();
btnManage.setVisibility(manage == null ? View.GONE : View.VISIBLE); btnManage.setVisibility(
manage.resolveActivity(getContext().getPackageManager()) == null
? View.GONE : View.VISIBLE);
btnManage.setOnClickListener(new View.OnClickListener() { btnManage.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@ -215,6 +220,13 @@ public class FragmentOptionsConnection extends FragmentBase implements SharedPre
swRlah.setChecked(prefs.getBoolean("rlah", true)); swRlah.setChecked(prefs.getBoolean("rlah", true));
} }
private static Intent getIntentConnectivity() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q)
return new Intent(Settings.ACTION_WIRELESS_SETTINGS);
else
return new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
}
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override @Override
public void onAvailable(@NonNull Network network) { public void onAvailable(@NonNull Network network) {

Loading…
Cancel
Save