Tagged: android

Android : How to pass parameter into class extends AsyncTask

ปกติเวลาเราต้องการโหลดข้อมูลจากเซิร์ฟเวอร์ เราจะสร้างการเชื่อมต่อแบบ AsyncTask ไว้ใน Activity class or Fragment class เช่น จากตัวอย่าง url ที่ส่งเข้ามาจาก getDataFromServer() จะนำมาใช้ที่ protected String doInBackground ในที่นี้คือ params[0] สมมติว่าโค้ดมันยาวเราอยากจะย้าย AsyncTask ออกไปจาก Activity or Fragment เราก็ไปสร้าง class ไฟล์ใหม่ได้ เช่น New->Java Class-> LoadData.java ดังตัวอย่าง...

Android : A/libc: fdsan: attempted to close file descriptor 86, expected to be unowned

หลังจากกำหนด targetSdkVersion 30 ปรากฎว่าแอปปลิเคชันเปิดแล้วปิดตัวทันที ลองไปตรวจสอบใน Logcat พบว่ามีเพียงข้อความ error A/libc: fdsan: attempted to close file descriptor 86, expected to be unowned แต่พอเปลี่ยน targetSdkVersion 29 กลับสามารถทำงานได้ปกติ เลยสืบค้นจนพบว่า Error ที่เกิดขึ้น นั่นเกี่ยวกับการใช้ <pl.droidsonroids.gif.GifTextView android:layout_width=”match_parent” android:layout_height=”match_parent” android:background=”@drawable/image” /> พบว่าถ้ารูปภาพที่โหลดไม่ใช่...

Android : How to detect App foreground/background

วันนี้เรามีอีกวิธีในการตรวจสอบว่าแอปฯของเราอยู่ในสถานะทำงานอยู่ (foreground) หรือถูกปิดหรือย่อให้อยู่เบื้องหลัง (Background) โดยวิธีนี้เราจะเรียกใช้ Lifecycle Observer ที่มากับ androidx (androidx.lifecycle.OnLifecycleEvent) ตรวจจับการทำงานของ Event ของแอปฯ การเรียกใช้เราประกาศครั้งเดียวตอนเปิดแอปฯ แล้วตัว lifecycle จะคอยจับ event ให้เรา ดังนี้ public class MainApp extends AppCompatActivity implements LifecycleObserver { … @Override protected void onCreate(Bundle savedInstanceState)...

Android Issue : Violation of Interfering with Apps, Third-party Ads, or Device Functionality policy

เคยประสบปัญหาโดน Google Rejected App ด้วยเหตุผลว่า “Violation of Interfering with Apps, Third-party Ads, or Device Functionality policy” หรือ แบบง่ายๆคือ การแสดงโฆษณาขึ้นมาหลังจากที่ปิดแอปฯ หรือย่อแอปฯ หรือภายนอกแอปฯ นั่นเอง ซึ่งจากที่ทดสอบมา สมมติว่าขณะที่แอปกำลังโหลดโฆษณา (Interstitial Ads) อยู่แล้วเราทำการกดปุ่ม Home เพื่อย่อแอปฯไปเบื้องหลัง ซึ่งในความเป็นจริงแล้วแอปฯ ก็ยังทำงานอยู่ในเบื้องหลัง (Background) นั่นเอง เพราะฉะนั้นเมื่อโหลดโฆษณาเสร็จ...

Android : How to create custom dialog

โดยปกติ Android จะมี AlertDialog ให้เราเรียกใช้ได้เลย ต้องการกำหนดข้อความอะไรก็สามาถเรียกฟังก์ชัน .setMessage(…) ได้ กำหนดให้มีปุ่มกดได้ก็เรียกฟังก์ชัน .setPositiveButton(…) ก็มีปุ่มพร้อมกดให้เลย แต่ถ้าเราต้องการเพิ่มเติมรูปภาพ หรือออปชันอื่นๆ ก็อาจทำไม่ได้ หรือทำได้แต่ไม่โดนใจเรา ซึ่งเราก็มีอีกทางเลือกคือสร้าง Custom Dialog ขึ้นมาเอง กำหนดหน้าตาของ Dialog layout เองทั้งหมด แบบนี้ก็จะได้ตามที่เราต้องการเลย เช่น สมมติว่าต้องการเพิ่มรูปภาพให้กดในรูปได้ (ImageButton) หรือต้องการเพิ่มข้อความให้กดแล้วไปเว็บต่อได้ (TextView) ก็ทำได้เลย โดยมีขั้นตอนการสร้าง Custom Dialog ดังนี้Create...

Android : How to handling Orientation Changed

ปัจจุบันสมาร์ทโฟนสามารถใช้งานได้ทั้งแบบแนวตั้ง (Portrait) และแนวนอน (Landscape) ซึ่งสมาร์ทโฟนมีฟังก์ชันการหมุนหน้าจออัตโนมัติ เพราะฉะนั้นถ้าเราออกแบบแอปปลิเคชันแบบแนวตั้งอย่างเดียว เมื่อผู้ใช้งานหมุนหน้าจอเป็นแนวนอน Layout ของแอปฯก็จะเพี้ยนจนบางครั้งอาจใช้งานไม่ได้ เช่น ปุ่มถูกย่อจนเล็กเกินไป เป็นต้น วันนี้เราจะมาเรียนรู้วิธีการจัดการ การหมุนหน้าจอของผู้ใช้งานกัน โดย Android ได้เตรียม Call back funtion ให้เรียบร้อย โดยมีขั้นตอนดังนี้ แก้ไข AndroidManifest.xml สำหรับ Activity ที่เราต้องการ โดยเพิ่มบรรทัดนี้ <activity android:name=”.MyActivity”        ...