mirror of
https://github.com/androidx/media.git
synced 2025-05-12 01:59:50 +08:00
Gracefully handle revoked ACCESS_NETWORK_STATE permission.
This permission has normal access right and can't be revoked by the user. However, an app can choose to revoke it when using ExoPlayer, e.g. if no network is required and the app doesn't want to list this permission. Support this use case by gracefully catching the exception in the relevant places. Issue:#6019 PiperOrigin-RevId: 253759332
This commit is contained in:
parent
76b9175072
commit
e1ff3d028f
@ -41,6 +41,8 @@
|
||||
([#5955](https://github.com/google/ExoPlayer/issues/5955)).
|
||||
* Add support for auto-detecting UDP streams in `DefaultDataSource`
|
||||
([#6036](https://github.com/google/ExoPlayer/pull/6036)).
|
||||
* Gracefully handle revoked `ACCESS_NETWORK_STATE` permission
|
||||
([#6019](https://github.com/google/ExoPlayer/issues/6019)).
|
||||
|
||||
### 2.10.1 ###
|
||||
|
||||
|
@ -27,6 +27,7 @@ import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.os.PowerManager;
|
||||
import androidx.annotation.IntDef;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
@ -128,7 +129,7 @@ public final class Requirements implements Parcelable {
|
||||
|
||||
ConnectivityManager connectivityManager =
|
||||
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
|
||||
NetworkInfo networkInfo = Assertions.checkNotNull(connectivityManager).getActiveNetworkInfo();
|
||||
if (networkInfo == null
|
||||
|| !networkInfo.isConnected()
|
||||
|| !isInternetConnectivityValidated(connectivityManager)) {
|
||||
|
@ -126,7 +126,8 @@ public final class RequirementsWatcher {
|
||||
@TargetApi(23)
|
||||
private void registerNetworkCallbackV23() {
|
||||
ConnectivityManager connectivityManager =
|
||||
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
Assertions.checkNotNull(
|
||||
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
|
||||
NetworkRequest request =
|
||||
new NetworkRequest.Builder()
|
||||
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
|
||||
|
@ -1713,7 +1713,12 @@ public final class Util {
|
||||
if (connectivityManager == null) {
|
||||
return C.NETWORK_TYPE_UNKNOWN;
|
||||
}
|
||||
networkInfo = connectivityManager.getActiveNetworkInfo();
|
||||
try {
|
||||
networkInfo = connectivityManager.getActiveNetworkInfo();
|
||||
} catch (SecurityException e) {
|
||||
// Expected if permission was revoked.
|
||||
return C.NETWORK_TYPE_UNKNOWN;
|
||||
}
|
||||
if (networkInfo == null || !networkInfo.isConnected()) {
|
||||
return C.NETWORK_TYPE_OFFLINE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user