jiajunhui / PlayerBase

The basic library of Android player will process complex business components. The access is simple。Android播放器基础库,专注于播放视图组件的高复用性和组件间的低耦合,轻松处理复杂业务。
Apache License 2.0
2.92k stars 437 forks source link

关于Andriod11权限申请失败,程序崩溃 #142

Open xxxbysecret opened 3 years ago

xxxbysecret commented 3 years ago

TelephonyManager.getNetworkType()在Android11上面需要动态申请READ_PHONE_STATE,但是当用户拒绝该权限后,在播放视频时会造成应用崩溃,这里是不是应该改成相关功能无法正常使用而不是直接崩溃?还是我使用的姿势不对? 下面是崩溃详情↓ Caused by: java.lang.SecurityException: getDataNetworkTypeForSubscriber at android.os.Parcel.createExceptionOrNull(Parcel.java:2385) at android.os.Parcel.createException(Parcel.java:2369) at android.os.Parcel.readException(Parcel.java:2352) at android.os.Parcel.readException(Parcel.java:2294) at com.android.internal.telephony.ITelephony$Stub$Proxy.getNetworkTypeForSubscriber(ITelephony.java:8762) at java.lang.reflect.Method.invoke(Native Method) at com.jg.bh.b.a.a.invoke(Native Method) at java.lang.reflect.Proxy.invoke(Proxy.java:1006) at $Proxy3.getNetworkTypeForSubscriber(Unknown Source) at android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:3706) at android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:3670) at com.kk.taurus.playerbase.utils.NetworkUtils.getNetworkState(NetworkUtils.java:75) at com.kk.taurus.playerbase.extension.NetworkEventProducer.onAdded(NetworkEventProducer.java:100) at com.kk.taurus.playerbase.extension.ProducerGroup.addEventProducer(ProducerGroup.java:43) at com.kk.taurus.playerbase.widget.SuperContainer.addEventProducer(SuperContainer.java:161) at com.kk.taurus.playerbase.widget.BaseVideoView.onCreateSuperContainer(BaseVideoView.java:140) at com.kk.taurus.playerbase.widget.BaseVideoView.init(BaseVideoView.java:112) at com.kk.taurus.playerbase.widget.BaseVideoView.(BaseVideoView.java:102) at com.kk.taurus.playerbase.widget.BaseVideoView.(BaseVideoView.java:97) at com.kk.taurus.playerbase.widget.BaseVideoView.(BaseVideoView.java:93)

jiajunhui commented 3 years ago

感谢反馈,后面会处理

ManuelEMR commented 3 years ago

Hi, is there any update on this issue?

jiajunhui commented 3 years ago

太忙,暂未处理

xiaobaDev commented 3 years ago

崩溃发生在项目的NetWorkUtils类,里面对网络状态的访问,引起READ_PHONE_STATE权限检查,在安卓11上会报安全异常,解决办法有两个

1、如果你自定义开发没用到网络事件,不启用即可 PlayerConfig.setUseDefaultNetworkEventProducer(false);

2、自己拷贝一份NetworkEventProducer,把NetWorkUtils类加个tryCatch即可

另外项目中ErrorCover 也直接引用了NetWorkUtils类,需要把相关方法增加tryCatch

  private int tryGetNetworkState() {
        try {
            return NetworkUtils.getNetworkState(getContext());
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            return STATUS_ERROR;
        }
    }
niyangup commented 2 years ago

崩溃发生在项目的NetWorkUtils类,里面对网络状态的访问,引起READ_PHONE_STATE权限检查,在安卓11上会报安全异常,解决办法有两个

1、如果你自定义开发没用到网络事件,不启用即可 PlayerConfig.setUseDefaultNetworkEventProducer(false);

2、自己拷贝一份NetworkEventProducer,把NetWorkUtils类加个tryCatch即可

另外项目中ErrorCover 也直接引用了NetWorkUtils类,需要把相关方法增加tryCatch

  private int tryGetNetworkState() {
        try {
            return NetworkUtils.getNetworkState(getContext());
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            return STATUS_ERROR;
        }
    }

good

XianLiangZou commented 8 months ago

崩溃发生在项目的NetWorkUtils类,里面对网络状态的访问,引起READ_PHONE_STATE权限检查,在安卓11上会报安全异常,解决办法有两个

1、如果你自定义开发没用到网络事件,不启用即可 PlayerConfig.setUseDefaultNetworkEventProducer(false);

2、自己拷贝一份NetworkEventProducer,把NetWorkUtils类加个tryCatch即可

另外项目中ErrorCover 也直接引用了NetWorkUtils类,需要把相关方法增加tryCatch

  private int tryGetNetworkState() {
        try {
            return NetworkUtils.getNetworkState(getContext());
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            return STATUS_ERROR;
        }
    }

第二种自己拷贝一份NetworkEventProducer修改要怎么覆盖默认设置呢,直接依赖源码修改源码吗