安卓开发之动态设置网络访问地址

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

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

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

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

下面开始直接贴代码

1.MainActivity.java

 public class MainActivity extends AppCompatActivity {
    private TextView tv_url_ma, tv_changeurl_ma, tv_refresh_ma;
    private WebView wv_showurl_ma;
    private static final int INTERNETCODE = 001;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();//代码初始化
        tv_url_ma.setText(PublicInfo.appurl);
        setClick();//设置点击方法
        checkPermissions();//检查用户是否给予网络权限,如果没有,就不启用
        initwv();//webview设置
    }

    /*8
    检查用户是否给予网络权限
     */
    private void checkPermissions() {
        if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {//用户没有进行网络授权
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.INTERNET}, INTERNETCODE);
            return;
        } else {
            //已经获取到网络权限,可以显示默认网址中的数据
            wv_showurl_ma.loadUrl(PublicInfo.appurl);//设置网络地址
        }

    }

    /**
     * 用户权限返回结果
     *
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case INTERNETCODE://网络权限的返回值
//if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {//证明得到了用户授权
                    checkPermissions();//再次调用检查权限的方法,如果没问题,就会启动网络请求
                } else {
                    Toast.makeText(MainActivity.this, "当前设备未获取网络权限,无法联网", Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;
        }
    }

    /**
     * webView设置
     */
    private void initwv() {
        wv_showurl_ma.getSettings().setJavaScriptEnabled(true);//如果网页中使用js,不加这行代码不显示
        wv_showurl_ma.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
//                return super.shouldOverrideUrlLoading(view, url);
                view.loadUrl(url);
                return true;//返回值为true时在WebView中打开,为false时调用浏览器打开
            }
        });
    }

    /**
     * 设置点击方法
     */
    private void setClick() {
        tv_changeurl_ma.setOnClickListener(new MainActivityClicm());
        tv_refresh_ma.setOnClickListener(new MainActivityClicm());
    }

    /**
     * 代码初始化
     */
    private void init() {
        tv_url_ma = findViewById(R.id.tv_url_ma);//url地址展示
        tv_changeurl_ma = findViewById(R.id.tv_chan
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值