无需在 Android Studio 中打开浏览器即可点击 URL

Posted

技术标签:

【中文标题】无需在 Android Studio 中打开浏览器即可点击 URL【英文标题】:Hit a URL without opening browser in Android Studio 【发布时间】:2017-07-06 19:10:09 【问题描述】:

我看过很多地方,尝试了很多东西,但似乎没有什么对我有用。任何人都可以在这里帮助我。我有一个简单的网址,我想在不打开手机浏览器的情况下点击它。我正在单击一个按钮,并且需要点击该 url,而无需打开浏览器。我不关心该页面上的内容,我只想加载它。我的 arduino cum ethernet shield IOT 项目基本上需要它,其中我用我的 android 手机控制我的电器。

这是我正在做的事情的 sn-p。 apk 生成时没有错误,但 url 没有以某种方式被击中。

谢谢你

public void led1on(View view)
      try 
        URL u = new URL("http://172.17.27.173/?2");
        HttpURLConnection http = (HttpURLConnection) u.openConnection();
        http.connect();
    catch (Exception e)
        e.getMessage();
        e.printStackTrace();
    

【问题讨论】:

您在清单中有INTERNET 权限吗?您是在 AyncTaskThread 中调用此方法吗? 似乎没有任何效果 - 你是什么意思?什么错误/异常? 是的,我已经添加了 INTERNET 权限,我只是按下一个按钮,并在其中添加了 onClick 并引用了此功能。我希望我能正确实施它。 没有错误,apk 生成正确,但是当我按下按钮时,手机上没有任何反应,就像没有任何反应。 【参考方案1】:

您可以将其作为 Web 服务调用,而对结果不做任何事情。例如:

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://172.17.27.173/yourpage", params, new AsyncHttpResponseHandler() 
    @Override
    public void onSuccess(String response)  // 200 OK
        // Do nothing
    
    @Override
    public void onFailure(int statusCode, Throwable error, String content)  // Response not 200
    
        // Some troubleshooting, etc.
    
);

为了了解如何使用上面的代码,你可以看看这里已经解释了如何使用 Android 的代码: http://loopj.com/android-async-http/

也可以使用其他一些库,例如 Apache Http 客户端: https://hc.apache.org/

try 
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        myContent = httpEntity.getContent();

     catch ...

【讨论】:

我相信为此我需要添加 AsyncHttpClient 依赖项。嗯,我并没有把我的头绕在 android studio 上。你愿意在这里帮助我如何做吗? 谢谢,它解决了我的目的。我在这个问题中实现了我想要的,谢谢大家的帮助。 没问题。我还添加了有关如何使用代码的更多说明。【参考方案2】:

使用此方法在您的应用程序中打开网址

你可以像调用 api 一样调用这个 url,它调用 url 时没有任何显示。或者制作一个 api(网络服务)并从应用程序中点击,然后在 api 端调用您的 url。

【讨论】:

嗯,您能否将我重定向到我可以阅读您所说内容的任何链接,或者甚至为此编写一些代码,以便我可以正确理解它。谢谢你【参考方案3】:

先做一个web view,然后让它不可见,这样就不会显示了。然后使用这个web view加载url就可以了,外部浏览器不会被执行。

val myWebView: WebView = findViewById(R.id.WebView)

使用下面的行来执行url就可以了。

myWebView.loadUrl("http://192.168.100.3/on")
myWebView.loadUrl("http://192.168.100.3/off")

演示程序如果我们使用拨动开关就可以了。

val myWebView: WebView = findViewById(R.id.WebView)

        val switch1: ToggleButton = findViewById(R.id.toggleButton)
        switch1.setOnCheckedChangeListener  _, isChecked ->
            Toast.makeText(this, if(isChecked) " ON" else " OFF", Toast.LENGTH_SHORT).show()

            if(isChecked)
               
                myWebView.loadUrl("http://192.168.100.3/on")

            
            else
               
                myWebView.loadUrl("http://192.168.100.3/off")

            

【讨论】:

以上是关于无需在 Android Studio 中打开浏览器即可点击 URL的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio发布库到JitPack

Android Studio发布库到JitPack

【转】Android Studio安卓模拟器不能联网的解决方案

直接在默认浏览器中打开 Shiny App

怎么用android studio设计安卓界面布局

认识Android Studio中各个模块