小编Aji*_*678的帖子

无法使用 Webview android 获取 HTTP 401 错误的回调

我正在使用带有 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也不起作用。

任何帮助,将不胜感激。

android http-error android-webview webviewclient

6
推荐指数
0
解决办法
1070
查看次数

在牛轧糖上多次接收FCM通知

我在我的应用程序中使用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)

android firebase firebase-cloud-messaging

3
推荐指数
1
解决办法
1868
查看次数