2017-06-01 3 views
-2

java.lang.ArrayIndexOutOfBoundsExceptionにWebViewのメソッドを使用してshouldOverrideUrlLoading .shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:357)at org.chromium.android_webview.AwContentsClient.shouldIgnoreNavigation(AwContentsClient.java:168)at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:352)at org.chromium.base。 android.os.Looper.loopのandroid.os.Handler.dispatchMessage(Handler.java:102)のorg.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)のSystemMessageHandler.nativeDoRunLoopOnce(ネイティブメソッド:0) Looper.java:148)android.app.ActivityThread.main(ActivityThread.java:7406)at java.l com.android.internal.os.ZygoteInit.main(ZygoteInit.java)のcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230)のang.reflect.Method.invoke(ネイティブメソッド:0) :ここでは1120)

は私のコードです:

hot_webview.setWebViewClient(new WebViewClient() 
    { 

     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 

      String checkurl = url; 
      String[] separated = checkurl.split("="); 
      String splitted=separated[1]; 


      Log.i("iaminh", " shouldOverrideUrlLoading called"); 

      boolean installed = appInstalledOrNot(splitted); 
      if(installed) 
      { 

       Intent LaunchIntent = getActivity().getPackageManager() 
         .getLaunchIntentForPackage(splitted); 
       startActivity(LaunchIntent); 


       hot_webview.loadUrl(Hot_url); 

      } else 
      { 


       try { 
        startActivity(new Intent(Intent.ACTION_VIEW, Uri 
          .parse(market_url + splitted))); 

        hot_webview.loadUrl(Hot_url); 

       } catch (ActivityNotFoundException anfe) 
       { 
        startActivity(new Intent(
          Intent.ACTION_VIEW, 
          Uri.parse(playstore_url + splitted))); 

        hot_webview.loadUrl(Hot_url); 
       } 

      } 






      return false; 
     } 

    }); 
+1

投稿コード –

+0

コード全体を共有してください –

+0

私の質問を編集してください。もう一度レビューしてください。 –

答えて

0

問題は、アレイを扱っているときはいつでも、要素にアクセスする前にチェックを行うことは安全であるコード

String splitted=separated[1]; 

のこの作品です配列で。何かのように

if(separated.length>2){ 
// do your stuff here 
String splitted=separated[1]; 
}else{ 
//handle failure case here 
} 
関連する問題