#AndroidStudio ตอนที่ 3 ใช้ CustomTabs แทน WebView สั่งเปิดโฮมเพจ

ตอนที่ 3 ใช้ CustomTabs แทน WebView สั่งเปิดโฮมเพจ

<introduction>
หลังแชร์ App และ .zip ของ Project ทั้ง 12 ตัว ที่ผมได้เปิด new project และ build เป็น APK ตาม Activity ที่ Android Studio มีมาให้ ใน ตอนที่ 1 เพื่อเป็นการเริ่มต้นสร้างความเคยชินในการสร้าง App เชิงสำรวจ IDE Tool ก็ต่อด้วยการสร้าง App ที่ใช้ WebView เพื่อเชื่อมออนไลน์แล้วนำ Homepage ตาม URL มาแสดงใน App

หลังจากนั้นก็พบว่า Oatrice เขียนเรื่อง “ยังใช้ Webview กันอยู่หรือ Chrome custom tabs เร็วกว่า 2 เท่านะ รู้ยัง” พอเข้าไปลองดูก็พบว่าเป็นการสั่งให้ Browser ทำงาน โดยส่ง URL ในแอพ ซึ่ง pasko ได้แชร์ code ของ project ที่สมบูรณ์ไว้ที่ github.com ซึ่งเข้าไปดู code แล้วเห็นว่ามีการใช้งาน CustomTabs ร่วมกับ WebView ได้อย่างลงตัว

ใน Post ตอนนี้้ ผมจะพูดถึงการติดตั้ง CustomTabs ผ่าน Dependencies และการเขียน Code เพื่อเรียกใช้อย่างง่าย ตั้งชื่อว่า Openweb2 ซึ่งต่อมาจาก ตอนที่ 2 นั่นเอง
</introduction>

<process>
กระบวนการในการพัฒนา APP
เพื่อติดตั้ง CustomTabs และเขียน code เรียกใช้งาน
สั่งเปิด Homepage ตาม URL ใน Browser ของ Smartphone
มีขั้นตอน ดังนี้

1. หลังอ่านเรื่อง CustomTabs ไปพักหนึ่ง พบว่า สิ่งที่ไม่ชัดเจน คือ Version เพราะจะติดตั้งก็ต้องรู้เลข Version แต่ละคนเขียนเล่าไว้ในแต่ละช่วงเวลา อ้างเลข Version ไม่ตรงกัน Copy Code ไปติดตั้งใน dependencies ก็จะมี Error ใน Warning แน่เหมือนแช่แป้ง ดังนี้ผมจึงเข้า Support Library Packages – https://developer.android.com เพื่อดูเลขรุ่นล่าสุด ผมใช้วิธีกดปุ่ม Ctrl+F หาคำว่า “customtabs” เมื่อ 2 สิงหาคม 2560
ก็พบครับ ใช้รุ่นนี้เลย

com.android.support:customtabs:26.0.0

2. การติดตั้ง Package ใหม่ ต้องเข้าไปใน Project ที่อยู่ใน IDE
ดังนั้นจึงสร้าง New Project แบบ Empty Activity ให้เรียบร้อย แล้วก็รอให้ project ติดตั้งจน Gradle build finished จนพร้อมในหน้า IDE เป็นขั้นตอนปกติเลยครับ

Android Studio Started
Android Studio Started

3. การติดตั้ง CustomTabs ใน Project ของเรา
ต้องเข้าใน Project Explore หรือ Project Windows หรือ Project Tab ที่อยู่มุมบนซ้าย
จะพบ 2 กลุ่มงาน คือ app กับ Gradle Scripts
ให้คลิ๊ก Gradle Script, build.gradle(Module: app)
แล้วพิมพ์คำว่า
compile ‘com.android.support:customtabs:26.+’
ก่อน testCompile ‘junit:junit:4.12’
ผมใส่ 26.0.0 แล้วติด Error พอใช้ 26.+ เหมือน Package ด้านบน ก็ผ่านครับ

4. จากนั้น Clear Project ผ่าน Menu Bar, Build
แล้วนั่งรอระบบแป๊ปนึง รอ Gradle Build Running
ผลการ Build แล้วก็ไม่พบ Message อะไรให้กวนใจ
แล้วเข้าไปดูว่าเรียบร้อยไหม ผ่าน Project Structure, Module, App, Dependencies
ก็จะพบว่า Package ของเรา เข้าไปรอให้ถูกเรียกใช้เรียบร้อยแล้ว

5. เนื่องจาก CustomTabs คือ Package ที่สามารถเรียก Browser มารับ URL ที่ App ส่งไปให้ ผมนำเสนอตัวอย่างใน openweb2 โดยแก้ไขเฉพาะแฟ้ม MainActivity.java โดยไม่ไปแก้ไข Layout ใน activity_main.xml ใน emulator แม้ไม่มี Chrome ก็เรียก Browser ในเครื่องมาแสดงผล แล้วส่งไปให้ Smart Phone ก็จะมีการถามว่าจะใช้ Browser ตัวใดในการเปิด และ Code ที่ใช้มีเพียงไม่กี่บรรทัด ที่เป็นหน้าที่หลักของ CustomTabs หากสนใจเพิ่มเติม ต้องเพิ่มกันเองตามสะดวกล่ะครับ สำหรับ openweb2.apk กับ openweb2.zip ผมแชร์ใน 4shared.com ที่อยู่ด้านล่างแล้ว

https://gist.github.com/thaiall/9551cc6b1f7508663f372f760518b59f

</process>

https://www.4shared.com/folder/AgIkeXaS/android.html

<website_guide>
https://developer.android.com/topic/libraries/support-library/packages.html
+ https://guides.codepath.com/android/Chrome-Custom-Tabs#next-steps
+ https://github.com/GoogleChrome/custom-tabs-client/blob/master/Using.md
+ https://developer.chrome.com/multidevice/android/customtabs
+ https://rominirani.com/gradle-tutorial-part-6-android-studio-gradle-c828c5639bb
+ http://www.thaiall.com/android
</website_guide>

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here

 

#AndroidStudio ตอนที่ 2 ทำ App เรียกโฮมเพจมาแสดงใน Smart Phone

ตอนที่ 2 ทำ App เรียกโฮมเพจมาแสดงใน Smart Phone

<introduction>
เคยเห็นแอพใน Smartphone ที่เปิดขึ้นมา แล้วก็ไปเรียกเว็บจาก URL มาแสดง
คำสั่งสำคัญที่มักใช้กัน คือ webview
แต่มีการปรับรุ่น SDK + Security + Device
ทำให้การใช้คำสั่งต้องมีรายละเอียดเพิ่มขึ้น
และนึกถึงการทำเว็บแบบ Progressive Web Apps
แต่ PWA กับ APK เชื่อมกันได้ไม่สนิท หรืออาจไม่เชื่อมกันเลย
ผมก็พยายามปรับ code ฝั่ง web server และ android ได้คุยกันรู้เรื่อง
โดยให้ส่ง user agent ไปให้กับ php ทั้งที่มี

HTTP_X_REQUESTED_WITH = [The package name from the app]

เพื่อกำหนดการทำงานให้ถูกต้องว่า
1) ถ้าถูกเรียกจาก app ใน android ต้องส่งอะไรไปให้
2) ถ้าเปิดแบบปกติก็ปล่อยให้เป็นการทำงานของ PWA
สำหรับ URL ที่ใช้เป็นกรณีศึกษาครั้งนี้เลือกใช้ Miss Grand 2017
http://www.thaiall.com/actress/missgrand2017/
และทดสอบกับ Smartphone จริง ผ่านแอพ WiFi ADB
https://play.google.com/store/apps/details?id=com.ttxapps.wifiadb
แล้ว code ที่แสดงไว้นี้ ฝากไว้กับ github.com เพราะมี plugin ใน blog

ทำให้แสดงผลได้สวยงาม
</introduction>

<process>
กระบวนการในการพัฒนา APP
เพื่อใช้งาน webview เรียกโฮมเพจผ่าน URL มาแสดงผล
มีขั้นตอน ดังนี้

1. เปิด Android Studio แล้วสร้าง New Project
เลือก Activity แบบ Empty Activity

2. ใน IDE ของ Android Studio มองหา Tab ด้านซ้าย
จะพบ 1: Project หรือกดปุ่ม ALT-1 ก็ได้
จะพบ 2 หัวข้อใหญ่ คือ app กับ gradle scripts
ให้ดูใน app จะพบหัวข้อ manifests, Java และ Res

3. ถ้าจะทำให้ App เรียกโฮมเพจผ่าน URL มาแสดงผล
สิ่งแรกที่ต้องทำ คือ คลิ๊กเปิดแฟ้ม AndroidManifest.xml ใน manifests
แล้วใส่ tag user-permission 2 บรรทัดตามตัวอย่าง code
เข้าไปด้านท้าย แทรกกลางระหว่าง TAG : /application กับ /manifest

</application>
แทรก code ไว้ที่นี่
</manifest>

AndroidManifest.xml

https://gist.github.com/thaiall/6d91cabec8a2d6adc59b74e646654edc

4. เปิดแฟ้ม MainActivity.java ที่อยู่ใต้ Package Name
ใน code ก็จะเริ่มด้วย package บรรทัดต่อมาก็ import อีกเพียบ
ตามด้วย public class MainActivity ..
สรุปว่า
copy code ด้านล่างนี้ไปวางทับของเดิม
แล้วแก้ชื่อ package name หรือแก้ไขข้อมูลอื่น ๆ ตามความเหมาะสม
อาทิ url ที่ต้องการ load
หรือ package name ให้ตรงกับที่ท่านตั้งไว้
หรือ user agent ถ้าไม่ใช้ ก็ลบบรรทัดนี้ไปได้
หรือ เปลี่ยนชื่อ host ที่ไม่ต้องการให้ทำ Intent ไปนอก App

 

MainActivity.java

https://gist.github.com/thaiall/32ac305eb17452490b74833a06dbbc35

5. ความตั้งใจคือ เรียกโฮมเพจตาม URL มาแสดงใน APP
เมื่อเปิดแฟ้ม activity_main.xml ที่อยู่ในใน app,res,layout
ก็ใส่ Tag : WebView ที่สำคัญเพียง Tag เดียว

activity_main.xml

https://gist.github.com/thaiall/3368a93b542548f2b9e9e175a50f4fe6

6. ในบทเรียนนี้ สรุปว่าต้องแก้ไข 3 ส่วน เมื่อมองจาก project explorer
เปิดผ่าน Menu bar ที่ View, Tool Windows, Project
– app, manifests, AndroidManifest.xml
– app, java, [package name], MainActivity.java
– app, res, layout, activity_main.xml

7. เมื่อแก้ไข code เสร็จแล้ว และไม่มี error มาให้กวนใจ
ก็สั่ง Menu bar, Make Project หรือ Ctrl+F9 หรือ Build APK 
แล้วส่ง Menu bar, Run, Run ‘app’ หรือ Shift+F10
เพื่อดูผลการทำงานของ App ใน Device Emulator หรือ Device
</process>

<website_guide>
+ http://www.thaiall.com/android
</website_guide>

หมายเหตุ 
ถ้าสนใจติดตามเนื้อหาในบล็อกนี้ สามารถ subscribe ด้วย email ที่อยู่ข้างขวา หรือ click here