我正在尝试从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。
答案 0 :(得分:2)
根据wikipedia,您的方案不得包含任何其他包含字母或“ +”,“-”,“。”的字符。
尝试重命名activity_buy://购买到activitybuy://购买。
答案 1 :(得分:0)
附录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'"
更新
您可以使用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();
}
}