如何在webview Android

时间:2015-10-30 11:02:22

标签: java android android-activity webview

我在Activity应用中的网页浏览中检测到URL时尝试更改Android。我收到这个错误:

Unable to start activity ComponentInfo{"xxx"}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=Open.Tok.Act }

这是我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="dk.westsoftdevelopment.elaegen" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="17" />

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <!-- Using the camera -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="a"
        android:theme="@style/AppTheme"
        >
        <activity android:name=".OpenTokActivity" android:configChanges="orientation|keyboardHidden|screenSize">
            <intent-filter>
                <action android:name="Open.Tok.Act" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".WebViewActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

以下是我的WebView的代码:

aWebView.setWebViewClient(new WebViewClient(){

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return super.shouldOverrideUrlLoading(view, url);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);

        if(url.equals("http://95.85.53.176/nhi/booktid"))
        {
            Log.d(LOGTAG, "GO TO OPENTOK!!!");
            startActivity(new Intent("OpenTokAct"));
        }
        Log.d(LOGTAG,"current URL = " + url);

    }



});

aWebView.loadUrl(mainUrl);

我也在onCreate()的开头试过这个,但它给了我同样的错误......

Intent openStartingPoint = new Intent("Open.Tok.Act");
startActivity(openStartingPoint);

谢谢

3 个答案:

答案 0 :(得分:2)

试试这个,

Intent intent = new Intent(MainActivity.this, Second.class);
startActivity(intent);

答案 1 :(得分:1)

点击Intent时,您有两种选择:explicit or implicit

现在,你正在做后者。为了使其正常工作,您的OpenTokActivity意图过滤器需要相应更新:

<intent-filter>
    <action android:name="Open.Tok.Act" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" /> <!-- optional -->
</intent-filter>`

为什么?

  • 如果未明确指定其组件名称,则DEFAULT方法需要Context.startActivity()类别来解析您的活动。
  • 应将BROWSABLE类别添加到可以从浏览器安全调用的活动中。

请注意,由于您自己创建Intent,因此您不需要'可浏览'类别。如果在稍后阶段,您希望网站自动触发重定向以在您的应用中打开活动,那么您需要将其重新添加。上面全部是documented here

但是,除非您有多个可以处理自定义操作的活动,否则只需触发显式意图就会轻松得多:

startActivity(view.getContext(), OpenTokActivity.class);

您可以移除<intent-filter> ... </intent-filter>的整个OpenTokActivity部分,除非您故意添加LAUNCHER类别(这将在顶级启动器中添加活动的入口点)

答案 2 :(得分:0)

在android中启动活动的不同方式。

第一种方式: - 明确

Intent intent = new Intent(this, MainActivity.class);
this.startActivity(intent);

第二种方式: - 隐含

startActivity(new Intent("dk.westsoftdevelopment.elaegen.OpenTokActivity"));

希望它会对你有所帮助。