private String uriHome = “http://www.baidu.com”;
private String url;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
Intent intent = getIntent();
Uri data = intent.getData();
if (data == null) {
url = “http://www.baidu.com”;
data = Uri.parse(url);
}
webView.loadUrl(data.toString());
}
}
但是结果发现,无论如何都无法实现在跳转之后,出现选择项来选择使用哪个浏览器来打开网页。于是便去翻阅各种资料,可是却发现我的代码没有任何问题,终于在一行一行进行审查时,发现了问题所在:
import androidx.appcompat.app.AppCompatActivity;
我引入的是Google最新推出的androidx,而非传统的android.support包
import android.support.v7.app.AppCompatActivity;
改成引用android.support包后,项目便可以正常弹出浏览器的选择项。
为什么会引入androidx包
=========================================================================
我所使用的是3.4.1版本的Android Studio,在创建项目时,会有如下选择项:
如果勾选,项目便会自动引入androidx包
androidx和android.support有何区别
======================================================================================
按照官方文档的说明 ,androidx 是对android.support包的整理后产物。未来新的特性和改进都会进入androidx包。主要原因是support库的命名十分混乱。所以,google推出了 androidx。但是现在的稳定版本还是采用android.support。
| android.support | androidx |
| — | — |
| com.android.support:support-compat | androidx.core:core:1.0.0+ |
| com.android.support:appcompat-v7 | androidx.appcompat:appcompat:1.0.0+ |
| com.android.support:design | com.google.android.material:material:1.0.0+ |
| com.android.support:multidex | androidx.multidex:multidex:2.0.0+ |
| com.android.support:recyclerview-v7 | androidx.legacy:legacy-support-v4:1.0.0+ |
| com.android.support:viewpager | androidx.viewpager:viewpager:1.0.0+ |
以上是一些常用依赖库的变化,可以看到androidx的包名对于android.support来说,确实精简了不少,而且androidx也将一些UI组件分离出来,例如coordinatorlayout
,viewpager
等等,这样做可以更加精确的定位需要使用的组件,职责更加分明,也可以减轻应用程序运行时的压力。
迁移
如果想要从android.support迁移到androidx,Android Studio有提供一键迁移功能:
还需要手动配置gradle.properties,添加如下代码:
android.enableJetifier=true
android.useAndroidX=true
l80MjM5ODU2Nw==,size_16,color_FFFFFF,t_70)
还需要手动配置gradle.properties,添加如下代码:
android.enableJetifier=true
android.useAndroidX=true