Javascript 如何使用Android Search Query(从操作栏中的搜索框)加载指定的URL,并在末尾添加查询?
堆栈溢出。我花了13个小时试图弄明白这一点,但我觉得还没弄明白有点傻。基本上,我想做的是从操作栏的搜索框中提取用户的搜索查询,并将该查询放在我指定的URL的末尾,然后将该URL加载到我当前的webview中 例如: 用户可访问www.homepage.tld 用户点击搜索框,输入dog。 我想把他的查询(狗)放在www.homepage.tld?search=(用户查询)的末尾 然后,我想在用户当前使用的同一个webview中加载该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(基本上就像他单击链接一样) 这是我当前的代码。它不是理解
编辑以添加:
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中打开它。我已经多次看到此链接,但在其中找不到任何相关内容:(此查询没有解析,这是我原始问题中的一小段代码