Ich mache eine app für meine website. Ich arbeite an einer einzigen Aktivität, MainActivity. Ich bin kein Android-Entwickler, der gerade lernt. Das Problem ist, ich habe eine Suche auf der Aktionsleiste meiner Hauptaktivität gemacht. Die Suchansicht kommt und ich kann Wörter darin eingeben. Aber als ich auf den Submit drückte, passiert nichts. Ich brauche das Ergebnis, um in derselben Aktivität zu sein. Hauptaktivität. Die Suchanfrage lädt eine Webseitensuche. Mein Menü ist R.menu.main und der Menüpunkt für die Suche ist R.id.action_search Bitte sagen Sie mir, was ich falsch mache. Hier ist mein Code für AndroidManifest.xmlandroid app suche auf aktionsbalken nicht ergebnis
<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>
Hier ist meine Hauptaktivität
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);
}}
Ich habe Ihre Methode versucht, aber das Problem ist nichts passiert, wenn ich die Abfrage eintippe und abschicke. Ich brauche eine Abfrage, die mit einem Webview geladen werden soll. mwebView.loadUrl ("http://google.co.in/?q=" + Abfrage); kannst du bitte meine Hauptaktivität und auch das Android-Manifest überprüfen. Ich brauche Suchergebnis und Suche in derselben Aktivität, und die Abfrage sollte in webview geladen werden @ random aspirer – Subhanjan
@Subhanjan Ich schlage vor, Sie die Anwendung zuerst zu debuggen, und lassen Sie mich nach dem Debuggen wissen. Upvote meine Antwort für die ganze Zeit, die ich herausnehmen werde und werde für Ihre Frage nehmen, wenn Sie es nicht selbst lösen können. –