2017-12-27 47 views
1

私はURL(私のサーバー)にリダイレクトして情報を保存してから、有料の銀行ページに行く支払い方法をコーディングしています。しかし問題がありますAndroidがブラウザの処理を完了するのを待ちます

ブラウザの処理が完了するのを待つ/支払い処理をキャンセルします。しかし、開始意図の後に完了と私はstartActivityForResult()onActivityResult()とチェックすることはできません。
私はstartActivityForResult()の直後に結果があります。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(******)); 
startActivityForResult(intent, 100); 

. 
. 
. 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data)     
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == 100) 
     Log.w("web", "finish"); 
} 

答えて

1

ブラウザは結果を返す可能性は低いですが、返される場所を指定する方法がないためです。代わりにWebViewを使用して、終了またはキャンセルポイントとみなす特定のURLを検出する必要があります。

WebView webview = findViewById(R.id.webview); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.setWebViewClient(new MyWebViewClient()); 
webview.loadUrl("https://yourpaymenturl.com/"); 
+0

ありがとうございました。はい私はこの方法でWebViewを使用できます。ローカルのアンドロイドマーケットがウェブビューを使用することを禁止し、外部のブラウザを使用するべきだと私に言いました.... –

+1

私が言ったように、ブラウザはトランザクションが完了したと見なすべき場所を指定する方法はありません。支払プラットフォームで、支払いが完了したときにリダイレクトされるURLを指定できる場合(通常はウェブページでウェブサイトに戻るために使用されます)、アプリによって処理されるURLを指定することができます。つまり、これはハックだと言われています。 –

+0

はい....カスタムURLスキーム –

1

:あなたのWebViewあなたがsetWebViewClient()を呼び出す必要で

class MyWebViewClient : WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String url) { 
     if (url.equals(FINISH_URL)) { 
      // Finished, we return true to handle navigation ourselves 
      return true; 
     } 

     // Keep navigating 
     return false; 
    } 
} 

:あなたがそうのように、特定のURLへのナビゲーションを検出するためにWebViewClientを実装し、public boolean shouldOverrideUrlLoading (WebView view, String url)をオーバーライドする必要が

ブラウザは結果を送信しません。 ACTION_VIEWおよびACTION_MAINプロトコルは、startActivityForResult()で正しく動作しません。

https://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent、int型)

あなたはWebViewのを開始し、ユーザーが現在のURLを追跡することによって終了した場合に決定する必要があります。

+0

ありがとうございますが、私は別の答えで言ったように、地元のアンドロイドマーケットから来たプライバシーポリシーのためにウェブビューを使用できません –

関連する問題