当前位置:   article > 正文

安卓开发之动态设置网络访问地址_android开发,如何将设备的ip地址与服务器地址绑定,当ip地址发生改变时,也可以访问

android开发,如何将设备的ip地址与服务器地址绑定,当ip地址发生改变时,也可以访问

之前开发程序联测测接口的时候,因为要和不同的后台人员调接口,所以经常要先把程序里的ip地址改成后台人员给我的。每次都要先修改ip地址,之后编译运行一下,才能测试。但要是换了个后台人员,或者同时和2个后台人员测接口,又要再修改ip后重新编译,重新运行,很繁琐,包括后期测试也是一样。

测试人员总是问我能不能弄个功能,可以让他们在dat环境下测完一个功能后,可以在应用里手动切换网络地址,继续测uat网络环境下此功能是否正常,之前忙着别的事儿,而且对这个功能也没什么头绪,就一直没弄。最近时间闲下来了,而且关于这个功能,我也有了一些自己的见解,所以在此把这个功能展示一下,嘿嘿。

多余的话就不说了,直接上图~

核心原理:这个输入框里可以随时设置网络地址和端口号(如果不需要输入端口号,直接空着就行),设置的网址会在点击保存按钮后直接替换app里面通用的网络地址前缀,同时将数据存入SharedPreferences中,每次启动app时,都会从Application中先检查SharedPreferences中是否存在保存的数据,如果有存储的数据,就将通用url修改成存储的url,达到这次保存,下次就不用修改了的功能。

下面开始直接贴代码

1.MainActivity.java

  1. public class MainActivity extends AppCompatActivity {
  2. private TextView tv_url_ma, tv_changeurl_ma, tv_refresh_ma;
  3. private WebView wv_showurl_ma;
  4. private static final int INTERNETCODE = 001;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. init();//代码初始化
  10. tv_url_ma.setText(PublicInfo.appurl);
  11. setClick();//设置点击方法
  12. checkPermissions();//检查用户是否给予网络权限,如果没有,就不启用
  13. initwv();//webview设置
  14. }
  15. /*8
  16. 检查用户是否给予网络权限
  17. */
  18. private void checkPermissions() {
  19. if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {//用户没有进行网络授权
  20. ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.INTERNET}, INTERNETCODE);
  21. return;
  22. } else {
  23. //已经获取到网络权限,可以显示默认网址中的数据
  24. wv_showurl_ma.loadUrl(PublicInfo.appurl);//设置网络地址
  25. }
  26. }
  27. /**
  28. * 用户权限返回结果
  29. *
  30. * @param requestCode
  31. * @param permissions
  32. * @param grantResults
  33. */
  34. @Override
  35. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  36. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  37. switch (requestCode) {
  38. case INTERNETCODE://网络权限的返回值
  39. //if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  40. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {//证明得到了用户授权
  41. checkPermissions();//再次调用检查权限的方法,如果没问题,就会启动网络请求
  42. } else {
  43. Toast.makeText(MainActivity.this, "当前设备未获取网络权限,无法联网", Toast.LENGTH_SHORT).show();
  44. }
  45. break;
  46. default:
  47. break;
  48. }
  49. }
  50. /**
  51. * webView设置
  52. */
  53. private void initwv() {
  54. wv_showurl_ma.getSettings().setJavaScriptEnabled(true);//如果网页中使用js,不加这行代码不显示
  55. wv_showurl_ma.setWebViewClient(new WebViewClient() {
  56. @Override
  57. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  58. // return super.shouldOverrideUrlLoading(view, url);
  59. view.loadUrl(url);
  60. return true;//返回值为true时在WebView中打开,为false时调用浏览器打开
  61. }
  62. });
  63. }
  64. /**
  65. * 设置点击方法
  66. */
  67. private void setClick() {
  68. tv_changeurl_ma.setOnClickListener(new MainActivityClicm());
  69. tv_refresh_ma.setOnClickListener(new MainActivityClicm());
  70. }
  71. /**
  72. * 代码初始化
  73. */
  74. private void init() {
  75. tv_url_ma = findViewById(R.id.tv_url_ma);//url地址展示
  76. tv_changeurl_ma = findViewById(R.id.tv_chan
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/988186
推荐阅读
相关标签
  

闽ICP备14008679号