WebView APK készítése

Fórumok

Sziasztok!

Szeretnék Android Studio 2.3.3-mal egy Webviewt készíteni próbaként meglévő weboldalból.
Feltelepítettem az AS 2.3.3-at, mindent úgy hagyva és elfogadva az alap és a felajánlott telepítéseket, amiket kínált.

Rengeteg YT és webes tutoriált megnéztem, megpróbáltam step by step utánuk csinálni, de nem megy. A felkínált kész projekt fájlt is importáltam, de le sem fordulnak, hibával leállnak, ráadásul tök másként néznek ki tartalmilag, mint ami egy "Empty Activity" - API 18 után elém tárul az AS 2.3.3-ban.

Ilyen egy webes tutoriál res\layout\activity_main.xml struktúrája:
https://pastebin.com/Rj8TgH2v

és ilyen, ami nálam alapból létrejön (ez futtatható, tehát a környezet szerintem jó):
https://pastebin.com/9MV2QqLE

Semmit nem tudok Android programozásból, így nem is tudom hol keressem a hibát.
Egyszerűen csak elő kell állítanom egy APK-t favágó módszerrel, nem ma kell megtanulnom.

Tudja valaki mitől más az activity_main.xml nálam?
Youtube AS 2.3.2-ben is más mint nálam!

Esetleg egy biztosan működő tutoriál?

Köszönöm a segítséget!

Hozzászólások

Nem teljesen az, amit elkezdtél, de ha csak egy webview a célod, akkor ennél egyszerűbb egy cordova / phonegap megoldással megvalósítani ezt, ionic-hoz vannak tutorialok, ha nyitott vagy váltásra android studio-ról akkor nézd meg.

A https://www.appypie.com/ oldalon készítettem egyet korábban, de azzal valami nagyon nem stimmel.
Nem forgatja el a képet, és emeltdíjas SMS és hívás jogot is kér a sok egyéb mellett (Ha SIM kártyát érzékelt)

Van tapasztalatod a phonegap-pel? Ott is lesz ilyen extra jog kérés?

Koszi!

Phonegap alatt gondolom most az adobe szolgáltatását érted, azt rég néztem, de a jogokat ott is te állítottad be, ők csak a html+js+css+xml fájlokból apk-t és egyebeket generálnak neked. Ezt az appypie-t nem ismerem.

Phonegap előnye még, hogy amit azzal megetetsz (html+js+css+xml csomagot), azt cordova-val is tudod használni. Sajna webview-t nem raktam még össze cordova-ban, ezért nem tudok adni neked forrást, de ha nagyon spórolós kell, vagy csak kezdésnek ki akarod próbálni, amennyire tudom az iframe is működik cordova alatt (fixme). Vagy, van egy példa a doksiban: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inap…

Hasonló cipőben járok én is.
Csináltam egy WebView APK-t, ami tökéletesen működik. Megy a weboldal vele, van hang, teszi a dolgát. Meglepő módom még az ősöreg ACE3-as telefonon is működik.
Viszont egyre több panasz érkezik, hogy nincs hang. Megnéztem újra 2 telefonon is és VAN hang. Először nem értettem, hogy mi van, de aztán kiderült, hogy Android 7.0-nél jelentkezik a probléma.
Tudtommal ezek visszafelé kompatibilisek, tehát simán mennie kéne. Ami furcsa, hogy ezek az 7.0-sak az app telepítésekor nem kér semmiféle engedélyt, pedig a AndroidManifest.xml-ben be van állítva:


    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK" />

Ha már most így kiderült, hogy mégsem olyan egyszerű a dolog, hogyan tudom rávenni, hogy 7.0 alatt is legyen hang?

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

Android programozás terén nálam is ugyanaz a helyzet mint a topicindítóval, magyarul teljesen más világ :)
Itt most az a cél visszafelé kompatibilis maradjon a dolog komolyabb gányolás nélkül, de akkor ezek szerint sikerült szembesülnöm egy gyönyörű kompatibiltási problémával.
-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

Nem teljesen erre gondoltam, de ha nem felejtem el, holnap kifejtem.

szerk.:
Évekkel ezelőtt Androidoztam utoljára, szóval nem biztos, hogy mindenben 100%-ig korrekt leszek, de.

A mainstream android fejlesztés során szerintem két helyen jöhetnek be kompatibilistási dolgok. Amikor te alkalmazást fejlesztesz Androidban, a mafinest fájlban leírod, hogy mi:
- a minSdkVersion
- a targetSdkVersion
https://developer.android.com/guide/topics/manifest/uses-sdk-element.ht…

Néha változtatnak a default működésen, s ha te azt írod a manifestben, hogy (tegyükfel) a 169-es SDK version a target, akkor az Android alapértelmezettnek veszi, hogy tisztában vagy, hogy milyen változások voltak a 168-169 váltáskor: s az új kódod futhat régi platformon, bizonyos megkötésekkel.

Ha a targetSdkVersion 168, akkor az újabb Androidokon is minden ugyanúgy megy, ahogy eddig. A platform garantálja, hogy az évekkel ezelőtt írt kódod fut, s működik jól (friss androidon is)- de ha a targetSdk-t húzod feljebb, akkor elvárja, hogy az új verzió által behozott change-ket lekövesd.

A másik, ami itt lehetséges, az a play services. Amennyire én emlékszem, a Play Services-re semmilyen garanciát nem vállal a Google, hogy hosszútávon tartja a kompatibilitását. Ebben vannak olyanok, amik bizonyos szinten alap rendszer dolgok, de a Google szeretné Andriud verziótól függetlenül frissíteni - pl. a WebView, vagy okosabb helymeghatározás, etc.
Szerintem doksiban azzal kezdik, hogy ellenőrizned kell a PlayServices verziót, ha használod, s felkészülni rá, hogy nem lesz neked megfelelő.

tldr: Ha kompatibilitási dologba futottál bele, akkor azért aktívan felelős vagy. A backward compatibilityt eléggé komolyan veszi a Google is, életem első publikált Android projektje ( https://play.google.com/store/apps/details?id=com.vilmos.nagy.crapmap ) hibátlanul elindult 8.0n tegnap este - pedig évek óta nincs hozzányúlva, s emlékeim szerint a térkép meg a helymeghatározás Play Servicesből jön.

Mivel jogosultságra gyanakszol, s az változott a 6.0-ban, én megnéznék egy targetSdkVersion-t első körben. Ha az 6.0 felett van (API Level 23, https://source.android.com/source/build-numbers#platform-code-names-ver… ), akkor én erre kezdenék vizsgálódni.
--
blogom

Közben meglett a probléma.
A weboldal időközben https lett, az arról mutató linkek egy része pedig sima http. Ez a régi androidoknál nem volt gond, de az újak meg se próbálják betölteni a http-s hangfájlokat.
Az lett a megoldás, hogy csak a WebView által használt oldal vissza lett téve sima http-re. Ha az azon lévő összes létező link https lesz (ami soha az életben nem fog megtörténni), akkor vissza lesz téve https-re a kérdéses oldal.

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

Közben közel sem tökéletes a dolog. Látszólag minden működik, csak ez a szerencsétlen 2 néha meg 3 szálon tölti le az audiót. Ha lestoppolom akkor csak 1 szál áll meg, a többi ugyanúgy generálja forgalmat. Ha több linket indítok illetve állítok le akkor ennek a többszöröse ragad bent a háttérben. Ugyanaz a weboldal asztali gépen akármilyen böngészőben nem csinálja ezt.

Ja, és az appban egyedi User Agent van beállítva amit használ is a HTML oldalak lekérdezésekor, de az audio lejátszásnál már önkényesen a "stagefright/1.2 (Linux;Android 4.4.4)" User Agentet használja.

Ötlet?

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

Igen, de ahogy látom, szépen elmegy a téma más irányba.
onPause meg onResume felé megy el a dolog, amikor nekem az a cél, hogy létre se jöjjön több kapcsolat, csak 1. És az az egy meg működjön

-------------------
https://onlinestream.hu/ - A legtöbb magyar rádió és TV egy helyen!

Ezek "normal" permission-ok. Nem kell kulon kerni ra engedelyt, telepiteskor automatan megkapja. Amugy a felhasznalo ha akarja telepites utan a beallitasokbol letudja tiltani.

Esetleg ha van egy Android 7-es telefonod, erdemes lenne megprobalni debuggolni a webappot. (https://developer.android.com/guide/webapps/debugging.html)

Félre ne értsétek, de ne csináljatok légyszi több webview-s alkalmazást meglévő weboldalból az app store-ba. Van elég. Köszi.