При запуске действия из WebView клик вызывает «Веб-страница недоступна» - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь начать другое действие из html webview. Так у меня есть одна рабочая ссылка, но вторая ссылка не работает. И это говорит " Веб-страница недоступна "

public class acilisbir extends AppCompatActivity {

WebView myBrowser;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_acilisbir);

    myBrowser = (WebView) findViewById(R.id.anasayfagetir);
    myBrowser.setWebViewClient(new MyBrowser());
    myBrowser.getSettings().setJavaScriptEnabled(true);
    myBrowser.loadUrl("file:///android_asset/anasayfa.html");
}

 private class MyBrowser extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
//This link is work
if (url.equalsIgnoreCase("Navigation://OpenNativeScreen")) {
                startActivity(new Intent(acilisbir.this,AnaEkran.class));
                finish();
                return true;
             //But this is not
            }else if (url.equalsIgnoreCase("activity_buy://Buy")) {
                startActivity(new Intent(acilisbir.this,Buy.class));
                finish();
                return true;
            }
            return false;
        }
    }

}

Я бы добавил к manifest

<activity android:name="Buy" >
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme="activity_buy" />
            </intent-filter>
        </activity>

Код ссылки HTML

<INPUT TYPE="test" value="Test" onClick="window.location='Navigation://OpenNativeScreen'">
<INPUT TYPE="buycr" value="Buycr" onClick="window.location='activity_buy://Buy'">

здесь ссылка , нацеленная на активность покупки , не работает. У меня нет ошибки в Android Studio. Но она не запускает BuyActivity при нажатии на ссылку.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Благодаря этому ответу и согласно RFC 2396 ,

Приложение A: Схема URI должна быть следующей:

scheme        = alpha *( alpha | digit | "+" | "-" | "." )

Затем замените это:

url.equalsIgnoreCase("activity_buy://Buy")
"window.location='activity_buy://Buy'"

С:

url.equalsIgnoreCase("activity.buy://Buy")
"window.location='activity.buy://Buy'"
  • Пожалуйста, примите во внимание голосование с повышением JulianCDC ответ для упоминания ссылки на ожидаемый выпуск.

Обновление

Вы можете использовать Uri.pasre(url) вместо url.equalsIgnoreCase

Uri uri = Uri.parse(url);
String scheme = uri.getScheme();
String host = uri.getHost();
switch (scheme){
    case "Navigation":
        handleNavigation(host);
        break;
    case "activity.buy":
        handleActivityActions(host);
        break;
}

private void handleNavigation(String host) {
    // do other stuff
    if ("OpenNativeScreen".equals(host)) {
        startActivity(new Intent(acilisbir.this, AnaEkran.class));
        finish();
    }
}

private void handleActivityActions(String host) {
    // do other stuff
    if ("Buy".equals(host)) {
        startActivity(new Intent(acilisbir.this,Buy.class));
        finish();
    }
}
0 голосов
/ 08 ноября 2018

Согласно википедии ваша схема не должна содержать никаких других символов, кроме букв или "+", "-", ".".

Попробуйте переименовать Activity_buy: // Купить в Activitybuy: //Buy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...