首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Supress默认浏览器: Java,Android studio

Supress默认浏览器: Java,Android studio
EN

Stack Overflow用户
提问于 2015-11-12 03:26:02
回答 2查看 1.7K关注 0票数 0

我正在设置一个简单的人工智能,聊天等功能。现在,我正在做一个小的网页视图“浏览器”。默认情况下向google打开,然后有一个小textedit和按钮来进行进一步的导航。但是,每当单击链接或我试图导航时,它都会打开默认浏览器。我尝试使用simmilar问题中的一些代码,但这导致了进一步的问题,因此我删除了它。谢谢你的帮助,这是我的代码:

按钮的Xml、清单和方法:

代码语言:javascript
运行
复制
manifest file
 <?xml version="1.0" encoding="utf-8"?>

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Main"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        android:theme="@style/FullscreenTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="comi.coding.prometheus.ignisai.Browser"
        android:parentActivityName="comi.coding.prometheus.ignisai.Main" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="comi.coding.prometheus.ignisai.Main" />
    </activity>
</application>

代码语言:javascript
运行
复制
<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Browser"
            android:id="@+id/startBrowser"
            android:onClick="StartBrowser"
            android:layout_above="@+id/btnSay"
            android:layout_alignRight="@+id/lblOutput"
            android:layout_alignEnd="@+id/lblOutput" />

public void StartBrowser(View view) {
            Intent intent = new Intent(this, Browser.class);
            startActivity(intent);
        }

Browser.java代码(第二次活动)

代码语言:javascript
运行
复制
package comi.coding.prometheus.ignisai;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class Browser extends Activity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();

        webView = (WebView) findViewById(R.id.webBrowser);
        webView.setWebViewClient(new MyWebViewClient());

        String url = "http://google.com";
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(url);
    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}

错误:

代码语言:javascript
运行
复制
   11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: FATAL EXCEPTION: main
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: Process: comi.coding.prometheus.ignisai, PID: 24169
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime: java.lang.IllegalStateException: Could not execute method for android:onClick
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:278)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.view.View.performClick(View.java:4497)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:18590)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:136)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5021)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:  Caused by: java.lang.reflect.InvocationTargetException
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.view.View.performClick(View.java:4497) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:18590) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:136) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5021) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:  Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {comi.coding.prometheus.ignisai/android.provider.Browser}; have you declared this activity in your AndroidManifest.xml?
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1723)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1511)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.Activity.startActivityForResult(Activity.java:3424)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.Activity.startActivityForResult(Activity.java:3385)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:784)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.Activity.startActivity(Activity.java:3627)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.Activity.startActivity(Activity.java:3595)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at comi.coding.prometheus.ignisai.Main.StartBrowser(Main.java:251)
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.support.v7.internal.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:273) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.view.View.performClick(View.java:4497) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:18590) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:136) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5021) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
11-11 20:38:34.831 24169-24169/? E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-14 09:36:54

这个问题与意图或清单的使用方式有关。我找到了一个我复制的深度教程,现在它正在调用第二个活动。您提供的代码不完全正常工作( web视图本身没有加载,但是在同一个布局中有一个按钮和文本编辑),当调用某些布局时,Log.d(“标记名”,“正在运行的浏览器类”)显示它没有被调用。总之,我完全重新做了清单,它是如何召唤第二次活动,它是如何工作的。我相信修复它的确切的改变是把它添加到清单中:

代码语言:javascript
运行
复制
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
票数 0
EN

Stack Overflow用户

发布于 2015-11-12 03:33:38

将此添加到您的按钮中,单击:

代码语言:javascript
运行
复制
  mWebView=(WebView)findViewById(R.id.yourID);
  mWebView.setWebViewClient(new MyBrowser());

将其作为类添加到类中:

代码语言:javascript
运行
复制
private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
      }
   }

这是一个使用WebView的简单示例类:

代码语言:javascript
运行
复制
 public class WebViewActivity extends Activity {
        private WebView webView;    

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_webview);

            webView = (WebView) findViewById(R.id.webView);
            webView.setWebViewClient(new MyWebViewClient());

            String url = "http://google.com";
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl(url);       
        }

        private class MyWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        }   
    }

这就是你要做的一切。将您的代码与以下代码进行比较

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33663925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档