操作栏上的android应用程序搜索未获得结果
我正在为我的网站制作一个应用程序。我正在进行一项活动,即MainActivity。我不是一个android开发者,只是在学习。问题是,我已经在我的主要活动的操作栏上进行了搜索。searchview即将发布,我可以在其中键入单词。但当我按下提交按钮时,什么也没发生。我需要的结果是在相同的活动I。主要活动。搜索查询将加载网页搜索。我的菜单是R.menu.main,搜索的菜单项是R.id.action\u search 请告诉我我做错了什么。以下是我的Androidmanifest.xml代码操作栏上的android应用程序搜索未获得结果,android,android-actionbar,searchview,Android,Android Actionbar,Searchview,我正在为我的网站制作一个应用程序。我正在进行一项活动,即MainActivity。我不是一个android开发者,只是在学习。问题是,我已经在我的主要活动的操作栏上进行了搜索。searchview即将发布,我可以在其中键入单词。但当我按下提交按钮时,什么也没发生。我需要的结果是在相同的活动I。主要活动。搜索查询将加载网页搜索。我的菜单是R.menu.main,搜索的菜单项是R.id.action\u search 请告诉我我做错了什么。以下是我的Androidmanifest.xml代码 <
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.CAMERA"/>
android:hardwareAccelerated="true"
<application android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="Bengalflora.in"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="Bengalflora.in"
android:theme="@style/AppTheme.NoActionBar"
android:launchMode="singleTop"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.default_searchable"
android:value="com.mywebsite.mywebsite.MainActivity"
android:resource="@xml/searchable" />
<meta-data
android:name="android.app.searchable"
android:value="com.mywebsite.mywebsite.MainActivity"
android:resource="@xml/searchable" />
</activity>
<activity android:name=".Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".Aboutus"
android:label="About us"
android:parentActivityName=".MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
</application>
android:hardwareAccelerated=“true”
这是我的主要活动
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener{
private static final int REQUEST_INTERNET = 200;
private static final int TIME_INTERVAL = 1000; // # milliseconds, desired time passed between two back presses.
private long mBackPressed;
private ProgressBar mProgressBar;
private static final String target_url="https://bengalflora.in";
private static final String target_url_prefix="bengalflora.in";
private Context mContext;
private WebView mWebviewPop;
private FrameLayout mContainer;
WebView mwebView;
String mypage_error = "file:///android_asset/error/index.html";
private static final String TAG = MainActivity.class.getSimpleName();
private String mCM;
private ValueCallback<Uri> mUM;
private ValueCallback<Uri[]> mUMA;
private final static int FCR=1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(Build.VERSION.SDK_INT >= 21){
Uri[] results = null;
//Check if response is positive
if(resultCode== Activity.RESULT_OK){
if(requestCode == FCR){
if(null == mUMA){
return;
}
if(intent == null){
//Capture Photo if no image available
if(mCM != null){
results = new Uri[]{Uri.parse(mCM)};
}
}else{
String dataString = intent.getDataString();
if(dataString != null){
results = new Uri[]{Uri.parse(dataString)};
}
}
}
}
mUMA.onReceiveValue(results);
mUMA = null;
}else{
if(requestCode == FCR){
if(null == mUM) return;
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
mUM.onReceiveValue(result);
mUM = null;
}
}
}
@SuppressLint({"SetJavaScriptEnabled", "WrongViewCast"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int Permission_All = 1;
String[] Permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.MEDIA_CONTENT_CONTROL, Manifest.permission.CAMERA, };
if(!hasPermissions(this, Permissions)){
ActivityCompat.requestPermissions(this, Permissions, Permission_All);
}
//
mProgressBar = (ProgressBar) findViewById(R.id.pb);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
mwebView = (WebView) findViewById(R.id.myWebView);
assert mwebView != null;
WebSettings webSettings = mwebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
CookieManager.getInstance().setAcceptThirdPartyCookies(mwebView, true);
mwebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
mwebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mwebView.getSettings().setAppCacheEnabled(true);
mwebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webSettings.setDomStorageEnabled(true);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setEnableSmoothTransition(true);
mwebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mwebView.getSettings().setAllowFileAccess(true);
if(Build.VERSION.SDK_INT >= 21){
webSettings.setMixedContentMode(0);
mwebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT >= 19){
mwebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT >=11 && Build.VERSION.SDK_INT < 19){
mwebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
mwebView.setWebViewClient(new Callback());
mwebView.setWebViewClient(new CustomWebViewClient());
mwebView.loadUrl("https://bengalflora.in/gallery/index.php");
mwebView.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int newProgress){
// Update the progress bar with page loading progress
mProgressBar.setProgress(newProgress);
if(newProgress >= 90){
// Hide the progressbar
mProgressBar.setVisibility(View.GONE);
}
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
mwebView.loadUrl(mypage_error);
}
//For Android 3.0+
public void openFileChooser(ValueCallback<Uri> uploadMsg){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FCR);
}
// For Android 3.0+, above method not supported in some android 3+ versions, in such case we use this
public void openFileChooser(ValueCallback uploadMsg, String acceptType){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult(
Intent.createChooser(i, "File Browser"),
FCR);
}
//For Android 4.1+
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FCR);
}
//For Android 5.0+
public boolean onShowFileChooser(
WebView webView, ValueCallback<Uri[]> filePathCallback,
WebChromeClient.FileChooserParams fileChooserParams) {
if(mUMA != null){
mUMA.onReceiveValue(null);
}
mUMA = filePathCallback;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){
File photoFile = null;
try{
photoFile = createImageFile();
takePictureIntent.putExtra("PhotoPath", mCM);
}catch(IOException ex){
Log.e(TAG, "Image file creation failed", ex);
}
if(photoFile != null){
mCM = "file:" + photoFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
}else{
takePictureIntent = null;
}
}
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType("image/*");
Intent[] intentArray;
if(takePictureIntent != null){
intentArray = new Intent[]{takePictureIntent};
}else{
intentArray = new Intent[0];
}
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, FCR);
return true;
}
});
}
//new code start
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
// Inflate the menu; this adds items to the action bar if it is present.
//
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
Intent searchIntent = getIntent();
String query = searchIntent.getStringExtra(SearchManager.QUERY);
if(Intent.ACTION_SEARCH.equals(searchIntent.getAction())) {
mwebView.loadUrl("http://google.co.in/?q="+query);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_upload:
mwebView.loadUrl("https://xyz/uploadpage.php");
return true;
case R.id.action_reload:
mwebView.reload();
return true;
case R.id.action_about:
startActivity(new Intent(this, Aboutus.class));
return true;
case R.id.action_exit:
finish();
}
return super.onOptionsItemSelected(item);
}
///////////////multiple permission code
public static boolean hasPermissions(Context context, String... permissions){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M && context!=null && permissions!=null){
for(String permission: permissions){
if(ActivityCompat.checkSelfPermission(context, permission)!=PackageManager.PERMISSION_GRANTED){
return false;
}
}
}
return true;
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_local) {
mwebView.loadUrl("http://xyz/index.php?/category/1&mobile=true");
} else if (id == R.id.nav_spices) {
mwebView.loadUrl("http://xyz?/category/84&mobile=true");
} else if (id == R.id.nav_vherbarium) {
mwebView.loadUrl("http://xyz/index.php?/category/36&mobile=true");
} else if (id == R.id.nav_usersupload) {
mwebView.loadUrl("http://xyz/index.php?/category/user&mobile=true");
} else if (id == R.id.nav_recent) {
mwebView.loadUrl("http://xyz/index.php?/recent_pics&mobile=true");
} else if (id == R.id.nav_login) {
mwebView.loadUrl("http://xyz/identification.php?mobile=true");
} else if (id == R.id.nav_register) {
mwebView.loadUrl("http://xyz/register.php?mobile=true");
} else if (id == R.id.nav_contact) {
mwebView.loadUrl("http://xyz/contact/&mobile=true");
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
public class CustomWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
// Do something on page loading started
// Visible the progressbar
mProgressBar.setVisibility(View.VISIBLE);
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
mwebView.loadUrl(mypage_error);
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
if(url.contains("something")) return true;
return false; //Default is to not override unless our condition is met.
}
public void onPageFinished(WebView webView, String url) {
String webUrl = webView.getUrl();
System.out.println(webUrl);
if(url.startsWith("https://xyz/plugins/oAuth/auth.php?provider=Facebook&openid_identifier=&init_auth=1#_=_"))
{
String redirectUrl = "https://xyz/gallery/facloginapp.php";
webView.loadUrl(redirectUrl);
return;
}
super.onPageFinished(webView, url);
mProgressBar.setVisibility(View.GONE);
}
}
public class Callback extends WebViewClient {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
mwebView.loadUrl(mypage_error);
}
}
// Create an image file
private File createImageFile() throws IOException{
@SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "img_"+timeStamp+"_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
return File.createTempFile(imageFileName,".jpg",storageDir);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
}
else{
if(mwebView.canGoBack()){
mwebView.goBack();
}
else if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis())
{
super.onBackPressed();
}
else { Toast.makeText(getBaseContext(), "Press back button once quickly to exit", Toast.LENGTH_SHORT).show(); }
mBackPressed = System.currentTimeMillis();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}}
public类MainActivity扩展了AppCompatActivity
实现NavigationView.OnNavigationItemSelectedListener{
私有静态最终int请求_互联网=200;
专用静态最终整型时间间隔=1000;//#毫秒,两次背压之间经过的所需时间。
私人长假;
私人ProgressBar mProgressBar;
私有静态最终字符串target_url=”https://bengalflora.in";
私有静态最终字符串target\u url\u prefix=“bengalflora.in”;
私有上下文;
私有网络视图mWebviewPop;
私有框架布局mContainer;
网络视图;
字符串mypage_错误=”file:///android_asset/error/index.html";
私有静态最终字符串标记=MainActivity.class.getSimpleName();
私有字符串mCM;
私人财产;
私人资产管理公司;
专用最终静态整数FCR=1;
@凌驾
ActivityResult上受保护的void(int-requestCode、int-resultCode、Intent-Intent){
super.onActivityResult(请求代码、结果代码、意图);
如果(Build.VERSION.SDK_INT>=21){
Uri[]results=null;
//检查响应是否为阳性
if(resultCode==Activity.RESULT\u确定){
if(requestCode==FCR){
if(null==mUMA){
返回;
}
if(intent==null){
//如果没有可用图像,请拍摄照片
如果(mCM!=null){
结果=新Uri[]{Uri.parse(mCM)};
}
}否则{
字符串dataString=intent.getDataString();
if(数据字符串!=null){
结果=新Uri[]{Uri.parse(dataString)};
}
}
}
}
mUMA.onReceiveValue(结果);
mUMA=null;
}否则{
if(requestCode==FCR){
if(null==mUM)返回;
Uri result=intent==null | | resultCode!=result_OK?null:intent.getData();
最小接收值(结果);
mUM=null;
}
}
}
@SuppressLint({“SetJavaScriptEnabled”,“ErrorViewCast”})
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int Permission_All=1;
字符串[]权限={Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.MEDIA_CONTENT_CONTROL,Manifest.permission.CAMERA,};
如果(!hasPermissions(此,Permissions)){
ActivityCompat.requestPermissions(此、权限、权限\全部);
}
//
mProgressBar=(ProgressBar)findViewById(R.id.pb);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
ActionBarDrawerToggle切换=新建ActionBarDrawerToggle(
这,抽屉,工具栏,R.string.navigation\u drawer\u open,R.string.navigation\u drawer\u close);
抽屉。设置抽屉定位器(开关);
toggle.syncState();
NavigationView NavigationView=(NavigationView)findViewById(R.id.nav_视图);
navigationView.setNavigationItemSelectedListener(此);
mwebView=(WebView)findViewById(R.id.myWebView);
断言mwebView!=null;
WebSettings WebSettings=mwebView.getSettings();
setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
CookieManager CookieManager=CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
CookieManager.getInstance().setAcceptThirdPartyCookies(mwebView,true);
mwebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
mwebView.getSettings().setCacheMode(WebSettings.LOAD\u CACHE\u ELSE\u网络);
mwebView.getSettings().setAppCacheEnabled(true);
mwebView.setScrollBarStyle(视图。滚动条在覆盖层内);
webSettings.setDomStorageEnabled(true);
webSettings.setLayoutAlgorithm(webSettings.LayoutAlgorithm.Shorrow_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(真);
webSettings.setEnableSmoothTransition(true);
mwebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mwebView.getSettings().setAllowFileAccess(true);
如果(Build.VERSION.SDK_INT>=21){
webSettings.setMixedContentMode(0);
mwebView.setLayerType(View.LAYER\u TYPE\u硬件,空);
}else if(Build.VERSION.SDK_INT>=19){
mwebView.setLayerType(View.LAYER\u TYPE\u硬件,空);
}else if(Build.VERSION.SDK_INT>=11&&Build.VERSION.SDK_INT<19){
mwebView.setLayerType(View.LAYER\u TYPE\u软件,空);
}
mwebView.setWebVi
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/search"
android:title="Search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
/>
</menu>
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main_menu, menu);
MenuItem item = menu.findItem(R.id.search);
SearchView searchview = (SearchView) item.getActionView();
searchview.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Log.d("hello", query);
msp_editor.putString("query", query);
msp_editor.commit();
fetchData(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
}