Урок 32. Пишем простой браузер

Обсуждение уроков
asfli
Сообщения: 1
Зарегистрирован: 30 июн 2018, 21:14

Re: Урок 32. Пишем простой браузер

Сообщение asfli » 30 июн 2018, 21:20

Приветствую!
Подскажите, пожалуйста, не сталкивался ли кто с такой проблемой, при выборе нашего активити выскакивает ошибка net::ERR_CLEARTEXT_NOT_PERMITTED , при выборее хрома все нормально. uses permission есть.

pilg
Сообщения: 1
Зарегистрирован: 16 окт 2018, 22:07

Re: Урок 32. Пишем простой браузер

Сообщение pilg » 16 окт 2018, 22:13

asfli писал(а):Приветствую!
Подскажите, пожалуйста, не сталкивался ли кто с такой проблемой, при выборе нашего активити выскакивает ошибка net::ERR_CLEARTEXT_NOT_PERMITTED , при выборее хрома все нормально. uses permission есть.
Помогло данной решение:
добавить в manifest в тег application следующее:

Код: Выделить всё

android:usesCleartextTraffic="true"
полный код файла manifest:

Код: Выделить всё

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        >
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <activity android:label="MyBrowser" android:name="BrowserActivity">
            <intent-filter tools:ignore="AppLinkUrlError">
                <action android:name="android.intent.action.VIEW"></action>
                <data android:scheme="http"></data>
                <category android:name="android.intent.category.DEFAULT"></category>
            </intent-filter>

        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>
Решение нашел здесь: https://stackoverflow.com/questions/527 ... e-is-https

kefir
Сообщения: 1
Зарегистрирован: 16 янв 2019, 17:27

Re: Урок 32. Пишем простой браузер

Сообщение kefir » 16 янв 2019, 17:39

Застопорился на этом уроке. Проблема с манифестом. Уроки прохожу на android studio 3.2.1. Не всё так же работает как в уроках, но раньше мне удавалось заставить работать как надо.
API 22: Android 5.1

Выделяет красным строки:
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<data android:scheme="http"></data>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>

Пишет мол: Activity supporting ACTION_VIEW is not set as BROWSABLE less....(Ctrl+F1)
Ensure the URL is supported by your app, to get installs and traffic to your app from Google Search.
Issue id: AppLinkUrlError.
Подскажите как решить проблему пожалуйста.

MainActivity java

Код: Выделить всё

package com.example.p0321simplebrowser;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        (findViewById(R.id.btnWeb)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.ya.ru")));
            }
        });
    }
}
activity_main xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <Button
        android:id="@+id/btnWeb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="web">
    </Button>
</LinearLayout>
BrowserActivity

Код: Выделить всё

package com.example.p0321simplebrowser;

import android.app.Activity;
        import android.net.Uri;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.webkit.WebView;
        import android.webkit.WebViewClient;

public class BrowserActivity extends Activity {

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

        WebView webView = (WebView) findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient());
        Uri data = getIntent().getData();
        webView.loadUrl(data.toString());
    }
}
browser.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </WebView>
</LinearLayout>
AndroidManifest.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.p0321simplebrowser">
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:label="MyBrowser" android:name="BrowserActivity">
            <intent-filter>
            <action android:name="android.intent.action.VIEW"></action>
            <data android:scheme="http"></data>
            <category android:name="android.intent.category.DEFAULT"></category>
            </intent-filter>
        </activity>
    </application>

</manifest>

0xc00000f
Сообщения: 1
Зарегистрирован: 17 янв 2019, 18:37

Re: Урок 32. Пишем простой браузер

Сообщение 0xc00000f » 17 янв 2019, 18:44

kefir писал(а):Выделяет красным строки:
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<data android:scheme="http"></data>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>

Пишет мол: Activity supporting ACTION_VIEW is not set as BROWSABLE less....(Ctrl+F1)
Ensure the URL is supported by your app, to get installs and traffic to your app from Google Search.
Issue id: AppLinkUrlError.
Подскажите как решить проблему пожалуйста.
Мне помогли следующие изменения в манифесте:
<activity android:name=".BrowserActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<data android:scheme="http"></data>
<category android:name="android.intent.category.BROWSABLE"></category>
</intent-filter>
</activity>
Другой способ решения предлагается здесь https://stackoverflow.com/questions/257 ... iew-action
Но я не совсем догнал, что тут происходит, может вы, коллеги, мне объясните :)

ilmaxwell
Сообщения: 2
Зарегистрирован: 20 янв 2019, 16:56

Re: Урок 32. Пишем простой браузер

Сообщение ilmaxwell » 20 янв 2019, 17:29

такой вопрос, решил сделать браузер с небольшими модификациями: прикрутил edittext чтобы вводить адрес, без активити которое создает интент view http, в общем у меня в манифесте

Код: Выделить всё

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme="http"/>
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
</activity>
почему не предлагается мое активити когда пытаюсь открыть ссылку с http? (варианты предлагаются но в них нет моего)

ilmaxwell
Сообщения: 2
Зарегистрирован: 20 янв 2019, 16:56

Re: Урок 32. Пишем простой браузер

Сообщение ilmaxwell » 21 янв 2019, 16:24

проблема в том, что активити запускается с помощью стартактивити только если оно принадлежит к категории дефолт, но добавлением строки не сработало, вот правильно:

Код: Выделить всё

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

            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

Vitas
Сообщения: 1
Зарегистрирован: 23 янв 2019, 19:28

Re: Урок 32. Пишем простой браузер

Сообщение Vitas » 23 янв 2019, 19:38

Ссылка ни в какую не открывается в моем браузере. Только во встроенном. Установлена Android Studio 3.3 система на эмуляторе Android 5.1(API 22). Файл манифеста. Чо не так?
[code][syntax=java]<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.p0321_simplebrowser">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".BrowserActivity" android:label="MyBrowser">
<intent-filter>
<action android:name="android.intent.action.VIEW."></action>
<data android:scheme="http"></data>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</manifest>[/code][/syntax]
Добавил
[code]<data android:scheme="https"></data>
<category android:name="android.intent.category.BROWSABLE "></category>[/code]
Один хрен всё то же((

Попробовал создать собственный фильтр вместо ACTION_VIEW и прописал его в action в манифесте <activity BrowserActivity. Эмулятор ругнулся и закрыл приложение.

YaroslavH
Сообщения: 3
Зарегистрирован: 31 май 2019, 16:30

Re: Урок 32. Пишем простой браузер

Сообщение YaroslavH » 02 июн 2019, 15:12

mkey писал(а):Добрый день!
Вопрос: где находится этот настройщик манифеста, скрины которого в уроке? Никак не могу найти, может в новой версии студии его нет?
Настройщик манифеста, как на скрине - в Eclipse. В Android Studio такого нет.

YaroslavH
Сообщения: 3
Зарегистрирован: 31 май 2019, 16:30

Re: Урок 32. Пишем простой браузер

Сообщение YaroslavH » 02 июн 2019, 15:15

Если у кого-то на новой Android Studio возникает ошибка с отображением в собственном WebView страницы (это может быть на бОльших API, чем 10, пишет в собственном браузере ошибку net::ERR_CLEARTEXT_NOT_PERMITTED), рекомендуется подправить манифест:

<application
....
android:usesCleartextTraffic="true"
....>

mistercx
Сообщения: 1
Зарегистрирован: 22 мар 2020, 05:27

Re: Урок 32. Пишем простой браузер

Сообщение mistercx » 28 мар 2020, 02:04

0xc00000f писал(а):
17 янв 2019, 18:44
kefir писал(а):Выделяет красным строки:
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<data android:scheme="http"></data>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>

Пишет мол: Activity supporting ACTION_VIEW is not set as BROWSABLE less....(Ctrl+F1)
Ensure the URL is supported by your app, to get installs and traffic to your app from Google Search.
Issue id: AppLinkUrlError.
Подскажите как решить проблему пожалуйста.
Мне помогли следующие изменения в манифесте:
<activity android:name=".BrowserActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<data android:scheme="http"></data>
<category android:name="android.intent.category.BROWSABLE"></category>
</intent-filter>
</activity>
Другой способ решения предлагается здесь https://stackoverflow.com/questions/257 ... iew-action
Но я не совсем догнал, что тут происходит, может вы, коллеги, мне объясните :)
У меня ошибка в Манифесте пропала после добавления .BROWSABLE (т.е. и .DEFAULT и .BROWSABLE):

Код: Выделить всё

<intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme="http" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

</intent-filter>

Ответить