我正在使用带有 WebViewClient 的 Webview 来加载需要身份验证的 URL。我正在使用WebViewClient 的onReceivedHttpAuthRequest方法为每个请求设置身份验证。
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
handler.proceed("username", "password");
}
Run Code Online (Sandbox Code Playgroud)
这适用于只需要基本身份验证的 URL。
但是,我的应用程序中的某些 URL 需要使用请求中的一些额外标头进行登录访问。所以对于这种请求,基本的认证是不够的,服务器会抛出 401 auth 错误。
因此,对于这种情况,我需要捕获 401 错误并需要将用户导航到登录屏幕。从棉花糖开始,WebViewClient 提供了以下方法来处理此类 HTTP 错误。
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
if(errorResponse.getStatusCode() ==401){
// Code to navigate user to Login Screen.
}
}
Run Code Online (Sandbox Code Playgroud)
但是我没有找到任何可以处理或获取此类 401 错误回调的棉花糖设备。此外,回调方法onReceivedError也不起作用。
任何帮助,将不胜感激。
我在我的应用程序中使用Firebase推送通知。但是,当我为某个事件发送通知时,仅在Nougat设备上2-3分钟后,我多次收到通知。我在版本低于Nougat的设备上仅收到一条通知。
我检查过服务器一次只发送一个通知。我的应用程式gradle中有低于相依的项目。
compile `com.google.firebase:firebase-messaging:11.8.0`
Run Code Online (Sandbox Code Playgroud)
这是FCM侦听器的代码:
public class MyFcmListenerService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
}
}
Run Code Online (Sandbox Code Playgroud)
在清单文件中:
<service android:name="com.myApp.test.fcm.MyFcmListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)