Перейти к содержанию
Fire Monkey от А до Я
  • 0

Андроид 9 и Интернет


Татьяна

Вопрос

Почему код, который работал на Андроид 7 (проверка, есть ли Интернет; отправка get-запроса), перестал работать в Андроид 9?

Это из-за разрешений? (permissions)

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
6 минут назад, Татьяна сказал:

Почему код, который работал на Андроид 7 (проверка, есть ли Интернет; отправка get-запроса), перестал работать в Андроид 9?

Это из-за разрешений? (permissions)

Возможно вы отправляете запрос на http вместо https ? Запросы без шифрования теперь запрещены по умолчанию. Но это можно обойти - тут в нескольких недавних темах  это обсуждалось.

Ссылка на комментарий
  • 0
5 часов назад, Евгений Корепов сказал:

Возможно вы отправляете запрос на http вместо https ? Запросы без шифрования теперь запрещены по умолчанию. Но это можно обойти - тут в нескольких недавних темах  это обсуждалось.

да, на http. У того сайта нет https. Запрещены начиная с 9-го Андроида?

Ссылка на комментарий
  • 0
1 час назад, Татьяна сказал:

да, на http. У того сайта нет https. Запрещены начиная с 9-го Андроида?

Вот тут рецепт, в манифест добавьте поля, https://stackoverflow.com/questions/51902629/how-to-allow-all-network-connection-types-http-and-https-in-android-9-pie

Ссылка на комментарий
  • 0
5 часов назад, Евгений Корепов сказал:

Куча советов там.

Достаточно дописать в манифест:

android:usesCleartextTraffic="true"

?

Ссылка на комментарий
  • 0
1 час назад, qz5 сказал:

неправильно манифест изменили

А как правильно?

Я разместила в секции application: 

    <application android:persistent="%persistent%" 
..............................
        android:theme="%theme%"
        android:usesCleartextTraffic="true"
        android:hardwareAccelerated="%hardwareAccelerated%">
 

Ссылка на комментарий
  • 0

нет, я только манифест менял

но возможно Вы манифест меняли обычным блокнотом например, его нао править только программами, которые не добавляют ВОМ

например с помощью Notepad++

Ссылка на комментарий
  • 0
38 минут назад, qz5 сказал:

нет, я только манифест менял

но возможно Вы манифест меняли обычным блокнотом например, его нао править только программами, которые не добавляют ВОМ

например с помощью Notepad++

Notepad++ я меняю.

Сейчас удалила строку android:usesCleartextTraffic="true" и успешно скомпилировала apk-файл.

Мне непонятно сообщение:

No resource identifier found for attribute 'usesCleartextTraffic' in package 'android'

 

Ссылка на комментарий
  • 0
16 минут назад, Татьяна сказал:

Notepad++ я меняю.

Сейчас удалила строку android:usesCleartextTraffic="true" и успешно скомпилировала apk-файл.

Мне непонятно сообщение:

No resource identifier found for attribute 'usesCleartextTraffic' in package 'android'

 

Вы где то ошиблись. Или в левой кодировке сохранили файл, или еще что.

На тестовом проекте добавил - все отлично собралось. Вот мой AndroidManifest.template.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%"
        android:installLocation="%installLocation%">

    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
    <%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="%persistent%" 
        android:restoreAnyVersion="%restoreAnyVersion%" 
        android:label="%label%" 
        android:debuggable="%debuggable%" 
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%"
        android:resizeableActivity="false"
        <!-- Вот сюда я добавил строчку -->                 
        android:usesCleartextTraffic="true">

        <%provider%>
        <%application-meta-data%>
        <%uses-libraries%>
        <%services%>
        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label="%activityLabel%"
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
                android:launchMode="singleTask">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name"
                android:value="%libNameValue%" />
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>
        <%activity%>
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->

 

Ссылка на комментарий
  • 0
11 минут назад, Татьяна сказал:

Евгений Корепов

Может, это от того, что у вас 10.3, а у меня 10.1 ?

Хм. Вот тут не подскажу. 10.1 лениво ставить. Закиньте суда свой AndroidManifest.template.xml (уже отредактированный). И кстати, попробуйте прогнать его онлайн валидатором xml

Ссылка на комментарий
  • 0
<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%"
        android:installLocation="%installLocation%">

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="28" />
<%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="%persistent%" 
        android:restoreAnyVersion="%restoreAnyVersion%" 
        android:label="@string/app_name" 
        android:debuggable="%debuggable%" 
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%"
        android:usesCleartextTraffic="true">

<%application-meta-data%>
        <%services%>
        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label="@string/app_name"
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
                android:launchMode="singleTask">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name"
                android:value="%libNameValue%" />
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>
        <%activity%>
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->

 

Ссылка на комментарий
  • 0

Я так думаю, что это косяк не Delphi, а aapt.exe. Он же принимает манифест, а потом собирает пакет?

 

[PAClient Error] Error: E2312 D:\Projects\8\Android\Release\aquery\AndroidManifest.xml:20: error: No resource identifier found for attribute 'usesCleartextTraffic' in package 'android'

Ссылка на комментарий
  • 0
2 часа назад, Tumaso сказал:

Манифест можно править руками, в любом текстовом редакторе

Нет, я не про редактирование манифеста как такового, а про редактирование его таким образом , чтобы в 9-м Андроиде с http работал. 

Ссылка на комментарий
  • 0
31 минуту назад, Татьяна сказал:

Есть еще идеи, как заставить Андроид 9 работать с http?

Help me please!

На будущее - при создании темы указывайте все исходные данные (как минимум вашу версию среды), что бы люди не давали вам советы, а потом уже узнали советы для какой версии среды они вам нужны.

Я поставил Берлин и попробовал - ничего не получилось, результат такой же как у вас. Разбираться времени нет.

Вот вам варианты:

1. Постарайтесь избавится от http и перейти на https. В наше время почти не возможно найти сайт http, даже самые отсталые  госслужбы перешли на https на своих порталах. Если это ваш сервер, то я могу проконсультировать по способам перевода его на https.

2. Перейдите на Delphi 10.3.2.

3. Сделайте на каком нибудь другом сервере прокладку между запросами приложения по https и запросами к вашему серверу по http.

 

Ссылка на комментарий
  • 0

Если кто-то когда-то столкнется с подобной проблемой, обязательно добавляйте в манифест эту строчку, она спасет Вам дни или Недели тупого бездумного кодинга, в надежде понять почему TWebBrowser не в силах отобразить фрейм(iframe в котором как оказалось потом есть обращение к HTTP). А вы сидите на Андройде 8.1 или ниже а заказчик например на 9 и выше. 

Изменено пользователем A_l_ex
Добавление описания
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...