2017-12-27 34 views
1

Ich kodiere eine Zahlungsmethode, die auf eine URL (mein Server) umleiten und einige Informationen speichern dann auf Bankseite für Pay-Preis gehen. aber es gibt ein ProblemAndroid warten auf Browserabsicht zu beenden

Ich möchte auf Browserabsicht warten, Bezahlvorgang abzuschließen/abzubrechen. aber es ist fertig sofort nach Startabsicht und ich kann nicht mit startActivityForResult() und onActivityResult() überprüfen.
Ich habe ein Ergebnis kurz nach startActivityForResult() genannt.

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"); 
} 

Antwort

1

Der Browser ist nicht sehr wahrscheinlich, mit einem Ergebnis zurückzukehren, da es keine Möglichkeit gibt, anzugeben, an welchem ​​Punkt zurückgegeben werden soll. Sie sollten stattdessen eine WebView verwenden und die spezifische URL ermitteln, die Sie als End- oder Cancelpunkt betrachten.

Sie benötigen einen WebViewClient zu implementieren und public boolean shouldOverrideUrlLoading (WebView view, String url) um außer Kraft setzen Navigation zu einer bestimmten URL zu erkennen, etwa so:

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; 
    } 
} 

In Ihrem WebView Sie müssen setWebViewClient() nennen:

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

danke .... Ja, ich kann WebView auf diese Weise verwenden. Aber ich habe ein anderes Problem, weil lokale Android-Märkte mich für die Verwendung von Web-Ansicht verboten und sie mir gesagt, ich sollte mit externen Browsern .... –

+1

Wie ich schon sagte, gibt es keine Möglichkeit zu spezifizieren, wo der Browser sollte die Transaktion zu Ende denken. Wenn Ihre Zahlungsplattform Ihnen die Möglichkeit gibt, eine URL anzugeben, die nach Abschluss der Zahlung umgeleitet wird (normalerweise wird diese in Webseiten verwendet, um zu Ihrer Website zurückzukehren), können Sie eine URL angeben, die von Ihrer App verarbeitet wird. Davon abgesehen wäre das ein Hack. –

+0

ja .... ich denke, wir sollten ein benutzerdefiniertes URL-Schema verwenden –

1

Die Browser sendet kein Ergebnis. Die Protokolle ACTION_VIEW und ACTION_MAIN funktionieren nicht ordnungsgemäß mit startActivityForResult().

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

Sie einen WebView beginnen sollte und festzustellen, ob der Benutzer durch Verfolgen der aktuellen URL beendet.

+0

danke, aber wie ich in einer anderen Antwort sagte, kann ich Webview wegen einiger Datenschutzrichtlinien, die von lokalen Android-Märkten kamen nicht verwenden –

Verwandte Themen