am 8df099df: Make CaptivePortalLogin app exit if underlying Network disconnects.
* commit '8df099df1516d23c113be3121635dcd34984a4a0': Make CaptivePortalLogin app exit if underlying Network disconnects.
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
package="com.android.captiveportallogin" >
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<application android:label="@string/app_name" >
|
||||
<activity
|
||||
|
||||
@@ -20,7 +20,10 @@ import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.ConnectivityManager.NetworkCallback;
|
||||
import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkRequest;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.Global;
|
||||
@@ -55,6 +58,7 @@ public class CaptivePortalLoginActivity extends Activity {
|
||||
|
||||
private URL mURL;
|
||||
private int mNetId;
|
||||
private NetworkCallback mNetworkCallback;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -73,7 +77,27 @@ public class CaptivePortalLoginActivity extends Activity {
|
||||
getActionBar().setDisplayShowHomeEnabled(false);
|
||||
|
||||
mNetId = Integer.parseInt(getIntent().getStringExtra(Intent.EXTRA_TEXT));
|
||||
ConnectivityManager.setProcessDefaultNetwork(new Network(mNetId));
|
||||
final Network network = new Network(mNetId);
|
||||
ConnectivityManager.setProcessDefaultNetwork(network);
|
||||
|
||||
// Exit app if Network disappears.
|
||||
final NetworkCapabilities networkCapabilities =
|
||||
ConnectivityManager.from(this).getNetworkCapabilities(network);
|
||||
if (networkCapabilities == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
mNetworkCallback = new NetworkCallback() {
|
||||
@Override
|
||||
public void onLost(Network lostNetwork) {
|
||||
if (network.equals(lostNetwork)) done(false);
|
||||
}
|
||||
};
|
||||
final NetworkRequest.Builder builder = new NetworkRequest.Builder();
|
||||
for (int transportType : networkCapabilities.getTransportTypes()) {
|
||||
builder.addTransportType(transportType);
|
||||
}
|
||||
ConnectivityManager.from(this).registerNetworkCallback(builder.build(), mNetworkCallback);
|
||||
|
||||
WebView myWebView = (WebView) findViewById(R.id.webview);
|
||||
WebSettings webSettings = myWebView.getSettings();
|
||||
@@ -84,6 +108,7 @@ public class CaptivePortalLoginActivity extends Activity {
|
||||
}
|
||||
|
||||
private void done(boolean use_network) {
|
||||
ConnectivityManager.from(this).unregisterNetworkCallback(mNetworkCallback);
|
||||
Intent intent = new Intent(ACTION_CAPTIVE_PORTAL_LOGGED_IN);
|
||||
intent.putExtra(Intent.EXTRA_TEXT, String.valueOf(mNetId));
|
||||
intent.putExtra(LOGGED_IN_RESULT, use_network ? "1" : "0");
|
||||
|
||||
Reference in New Issue
Block a user