Javascript 如何使用Android Search Query(从操作栏中的搜索框)加载指定的URL,并在末尾添加查询?

Javascript 如何使用Android Search Query(从操作栏中的搜索框)加载指定的URL,并在末尾添加查询?,javascript,android,search,Javascript,Android,Search,堆栈溢出。我花了13个小时试图弄明白这一点,但我觉得还没弄明白有点傻。基本上,我想做的是从操作栏的搜索框中提取用户的搜索查询,并将该查询放在我指定的URL的末尾,然后将该URL加载到我当前的webview中 例如: 用户可访问www.homepage.tld 用户点击搜索框,输入dog。 我想把他的查询(狗)放在www.homepage.tld?search=(用户查询)的末尾 然后,我想在用户当前使用的同一个webview中加载该URL(基本上就像他单击链接一样) 这是我当前的代码。它不是理解

堆栈溢出。我花了13个小时试图弄明白这一点,但我觉得还没弄明白有点傻。基本上,我想做的是从操作栏的搜索框中提取用户的搜索查询,并将该查询放在我指定的URL的末尾,然后将该URL加载到我当前的webview中

例如: 用户可访问www.homepage.tld 用户点击搜索框,输入dog。 我想把他的查询(狗)放在www.homepage.tld?search=(用户查询)的末尾 然后,我想在用户当前使用的同一个webview中加载该URL(基本上就像他单击链接一样)

这是我当前的代码。它不是理解+查询(但我只是把它放在那里,希望它能工作:(


编辑以添加:

    package com.tabletapp;

import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.SearchView;


public class ATAActivity extends Activity {
    final Activity activity = this;
    private WebView webview; 
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
     // Look up the AdView as a resource and load a request.
        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);String newUA="Mozilla/5.0 (Linux; U; Android 3.2; en-us; 3ATApps0) Android/3.0 (KHTML, like Gecko) Android/3.0"; // Change this to desired UA
        webview.getSettings().setUserAgentString(newUA);
        webview.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);

                if(progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                // Handle the error
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
        });        
        webview.loadUrl("http://www.homepage.tld");
    }
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // Check if the key event was the BACK key and if there's history
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
                webview.goBack();
                return true;
            }
            // If it wasn't the BACK key or there's no web page history, bubble up to the default
            // system behavior (probably exit the activity)
            return super.onKeyDown(keyCode, event);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.menu, menu);

            // Get the SearchView and set the searchable configuration
            SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(true); // Do not iconify the widget; expand it by default
            searchView.setSubmitButtonEnabled(true);
            return true;
        }
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle item selection
            switch (item.getItemId()) {
            case R.id.refresh:
                webview.reload ();
                return true;
            case R.id.home:
                webview.loadUrl ("http://www.homepage.tld");
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }

        public boolean onKeyEnter(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_ENTER) && SearchView.QUERY) {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append("http://www.homepage.tld?s=");
                stringBuilder.append(SearchView.QUERY);
                String summary = "<?xml version=\"1.0\" encoding=\"utf-8\"?><html><body>"+ stringBuilder.toString() +" </body></html>";
                String uri = Uri.encode(summary);
                webview.loadData(uri, "text/html", "UTF-8");
                return true;
            }
            return super.onKeyEnter(keyCode, event);
        }
    }
        public boolean onQueryTextSubmit(String query) {
        webview.loadUrl("http://www.homepage.tld?s=" + query);
        return false;
    }
public boolean onQueryTextSubmit(String query) {
        webview.loadUrl ("http://www.homepage.tld?s=" + query);
        final String TAG = "MyActivity1";
        Log.d(TAG, "index=" + 2);
        return false;
    }}

编辑以添加:

    package com.tabletapp;

import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.SearchView;


public class ATAActivity extends Activity {
    final Activity activity = this;
    private WebView webview; 
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
     // Look up the AdView as a resource and load a request.
        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);String newUA="Mozilla/5.0 (Linux; U; Android 3.2; en-us; 3ATApps0) Android/3.0 (KHTML, like Gecko) Android/3.0"; // Change this to desired UA
        webview.getSettings().setUserAgentString(newUA);
        webview.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);

                if(progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                // Handle the error
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                view.loadUrl(url);
                return true;
            }
        });        
        webview.loadUrl("http://www.homepage.tld");
    }
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // Check if the key event was the BACK key and if there's history
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
                webview.goBack();
                return true;
            }
            // If it wasn't the BACK key or there's no web page history, bubble up to the default
            // system behavior (probably exit the activity)
            return super.onKeyDown(keyCode, event);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.menu, menu);

            // Get the SearchView and set the searchable configuration
            SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(true); // Do not iconify the widget; expand it by default
            searchView.setSubmitButtonEnabled(true);
            return true;
        }
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle item selection
            switch (item.getItemId()) {
            case R.id.refresh:
                webview.reload ();
                return true;
            case R.id.home:
                webview.loadUrl ("http://www.homepage.tld");
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }

        public boolean onKeyEnter(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_ENTER) && SearchView.QUERY) {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append("http://www.homepage.tld?s=");
                stringBuilder.append(SearchView.QUERY);
                String summary = "<?xml version=\"1.0\" encoding=\"utf-8\"?><html><body>"+ stringBuilder.toString() +" </body></html>";
                String uri = Uri.encode(summary);
                webview.loadData(uri, "text/html", "UTF-8");
                return true;
            }
            return super.onKeyEnter(keyCode, event);
        }
    }
        public boolean onQueryTextSubmit(String query) {
        webview.loadUrl("http://www.homepage.tld?s=" + query);
        return false;
    }
public boolean onQueryTextSubmit(String query) {
        webview.loadUrl ("http://www.homepage.tld?s=" + query);
        final String TAG = "MyActivity1";
        Log.d(TAG, "index=" + 2);
        return false;
    }}

**此日志标记从不激发。前两个(0和1)在加载应用程序时激发).

好吧,我想它不会是静态的,因为每次用户进行搜索时,它可能都会不同。基本上,我拥有一个网站。我制作了一个WevView应用程序,现在我想使用内置的操作栏搜索框让用户在其中键入搜索查询,然后以某种方式将该查询附加到www.homepage.tld?search的末尾=(查询),然后在当前webview中加载该URL。好的,那么我要将此代码替换为
webview.loadUrl(“http://www.homepage.tld?s=“+查询)
?好的,这是说,
查询无法解析或不是一个字段
,所以很明显,我根本没有做正确的搜索。你想要整个活动吗?我想我可以从一个活动文件中完成所有这一切,对吗?我已经添加了整个活动文件。我不确定你所说的“QUE的定义”是什么意思我可能走错了路…我是个业余爱好者!谢谢,Coderthis太让人困惑了。我唯一能理解的是,它想使用“应用程序”全局搜索提供商…我真的不想提供任何搜索…我只想从框中抓取查询,将其附加到搜索的末尾url,然后在提交查询时在webview中打开它。我已经多次看到此链接,但在其中找不到任何相关内容:(此查询没有解析,这是我原始问题中的一小段代码