PracticU

External Storage

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › External Storage
מילון מושגים:
אחסון - שמירת נתונים באופן קבוע על התקנים כמו דיסקים או שירותי ענן, כך שיישמרו גם לאחר כיבוי.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.

External Storage
כתיבה וקריאה של קובץ ב-external storage זהות לדוגמה הקודמת, פרט לשלושה דברים: הנתיב, בדיקה שהאחסון זמין, והרשאות במאניפסט.
מה משתנה
1. הנתיב: במקום getFilesDir משתמשים בפונקציה שמחזירה נתיב חיצוני, למשל Environment.getExternalStorageDirectory() (או getExternalStoragePublicDirectory), עם getAbsolutePath ושם הקובץ.
2. בדיקת זמינות: כותבים פונקציה isExternalStorageMounted שקוראת ל-Environment.getExternalStorageState() ומחזירה false אם המצב אינו Environment.MEDIA_MOUNTED. בתחילת הכתיבה ובתחילת הקריאה בודקים אותה. אם האחסון חסר, מציגים Toast ("external storage is missing or not supported") ויוצאים מהפונקציה. כך מתגוננים למצב שבו המשתמש שלף את ה-SD Card.
3. הרשאות: במאניפסט מוסיפים uses-permission ל-READ_EXTERNAL_STORAGE ול-WRITE_EXTERNAL_STORAGE, לפי הצורך: קריאה בלבד, כתיבה בלבד או שתיהן.
בדיקה
באמולטור הזה אין external storage, ולכן הבדיקה נעשתה במכשיר אמיתי. הכתיבה והקריאה הצליחו. בהגדרות המכשיר, בקטגוריה Storage, נמצא MyFile (52 בתים) תחת Miscellaneous. אפשר למחוק אותו משם אבל לא לצפות בו. תיקיות כמו Pictures, Music או Podcasts היו מתקבלות לו נשמר בהן.
הקובץ נגיש לאפליקציות אחרות ונשאר אחרי הסרת האפליקציה.
כעת אפשר לכתוב ולקרוא קבצים באחסון החיצוני, תוך בדיקה שהוא זמין וקבלת ההרשאות.
השיעור הבא בקורס: Compare Text to Binary

פרקי ההרצאה: External Storage

  1. 00:00

    נתיב לקובץ ב-External Storage

  2. 00:39

    בדיקה שהזיכרון החיצוני מחובר

  3. 02:01

    הודעה כשהזיכרון החיצוני חסר

  4. 03:03

    הרשאות קריאה וכתיבה במניפסט

  5. 04:18

    בדיקת כתיבה וקריאה במכשיר אמיתי

תמלול ההרצאה: External Storage

הטקסט המלא של הדקות הראשונות בהרצאה «External Storage» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    אחרי שראינו איך אנחנו יכולים ליצור קובץ, לכתוב אליו ולקרוא ממנו, בואו נראה איך אנחנו יכולים לעשות בדיוק את זה אבל באקסטרנל סטורג'. הדבר הראשון שאנחנו צריכים לעשות זה לא להביא את הנתיב לאינטרנל סטורג' אלא לגשת לאותה פונקציה שראינו שמביאה לנו את הנתיב לאקסטרנל סטורג'.

  2. 00:25

    הפונקציה הייתה לדוגמה environment.get external storage public directory, או בואו ניקח אפילו את get external storage directory כדי להיות יותר סימפל ולקרוא פשוט ל-get absolute path עם הקובץ.

  3. 00:44

    הדבר הבא שאנחנו צריכים לעשות זה פונקציה שבודקת האם הזיכרון הזה קיים. בואו נבנה אותה פה. private boolean is external storage mounted.

  4. 01:05

    אקסטרנל סטורג' זאת מילה באנגלית שמתארת שמשהו קיים ויש עבורו תמיכה והוא עובד בצורה תקינה. בתוך הפונקציה אנחנו רוצים לפתוח איזושהי מחרובת שנקראת external storage state ולקבל את environment.get external storage state.

  5. 01:31

    זה המצב של האקסטרנל סטורג'. הדבר הבא שאנחנו רוצים לעשות זה לבדוק האם הוא לא בסדר. אם not external storage state נקודה equals ל environment.media.mounted אנחנו מחזירים false.

  6. 01:56

    אחרת בואו נחזיר true. עכשיו יש לנו פה פונקציה שבודקת את המצב של ה external storage של אותו זיכרון. לפני שאנחנו מבצעים כתיבה או קריאה מה שכדאי לנו לעשות זה פשוט לבדוק על ידי הפונקציה הזאת את המצב של האקסטרנל סטורג'.

  7. 02:15

    אם Not is external storage mounted האם האקסטרנל סטורג' לא קיים, לא נתמך, לא מוכן לשימוש? בואו נציג איזה טוסט, נכתוב בו external storage is missing or not supported ופשוט נצא מהפונקציה ולא נבצע דבר.

  8. 02:42

    בואו ניקח בדיוק את זה. נדביק גם בפונקציה של הקריאה וכעת אנחנו בעצם מגינים על עצמנו ממצב שבו ה-External Storage לא קיים, היוזר אולי שלף את ה-SD Card מהמכשיר והוא לא קיים וכדומה.

  9. 03:03

    הדבר הבא שאנחנו צריכים לעשות זה לתת הרשאה. אנחנו הולכים ל-Manifest ונותנים כאן הרשאת כתיבה ו/או הרשאת קריאה. Uses Permission External Storage כאשר אנחנו יכולים to read it ובואו ניתן עוד אחד Uses Permission External Storage to write write external storage אז אם אנחנו רוצים רק לקרוא אנחנו יכולים רק read אם אנחנו רוצים רק לכתוב אנחנו יכולים רק write אם

  10. 03:38

    אנחנו רוצים את שניהם אבל אנחנו חייבים את שניהם וזה בעצם מציין מבחינת אנדרואיד להרשאות של האפליקציה שאנחנו רוצים לקרוא ולכתוב לאקסטרנל סטורג'.

  11. 03:50

    מכאן, כל הדוגמה הזאת זהה לדוגמה הקודמת שבה ביצענו כתיבה לקובץ וקריאה מקובץ. פשוט בגלל שהנתיב כרגע מצביע על אקסטרנל סטורג', אז הכתיבה והקריאה יהיו לאקסטרנל סטורג', לאותו זיכרון שהוא נגיש על ידי כל האפליקציות, שהוא נשמר במכשיר אחרי שאנחנו מסירים את האפליקציה והוא לא מוסר ביחד עם האפליקציה.

  12. 04:20

    אז אנחנו רוצים לבדוק את זה, ולמעשה באמולטור אין external storage, אין sd card, לפחות באמולטור הזה. אז בואו נבדוק את זה על המכשיר האמיתי, ונבצע writing, אנחנו רואים שזה done, ונבצע reading, ואנחנו רואים שהוא הצליח לקרוא, והשאלה היא איפה הדבר הזה נשמר.

  13. 04:48

    אז בואו ניגש ואפילו נסגור את האפליקציה וניגש ל-Settings של המכשיר. ב-Settings אנחנו יכולים לגשת ל-Storage וב-Storage אנחנו יכולים לראות שיש לנו פה כל מיני תיקיות, לדוגמה אם היינו שומרים את המידע בתיקיית Pictures אז זה היה נשמר כאן, אם היינו שומרים את זה

  14. 05:12

    ב-Ringtone או ב-Podcast

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Text Files

ההרצאה הבאה: Compare Text to Binary

הרצאות קשורות מקורסים אחרים

  • S3 Storage - חלק 1
  • מבוא ל-Storage בענן
  • הגדרת vMotion Storage
  • הסבר על Storage Spaces

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון