
TextView עם הכיתוב TextPad, וזו לא האקטיביטי שבה אפליקציות אחרות ישתמשו.TextPadActivity עם FrameLayout (padding 16 ורקע אדום כהה). בתוכו ScrollView ו-TextView עם הזיהוי textViewData, צבע טקסט לבן וגודל 25sp. הטקסט עצמו לא נקבע ב-XML.onCreate מקבלים את ה-Intent בעזרת getIntent(), שולפים getStringExtra בשם text to present ושמים ב-TextView בעזרת setText. מי שרוצה להפעיל את האקטיביטי חייב לספק את ה-extra הזה, ולכן צריך לפרסם זאת במסמכי האפליקציה.TextPadActivity (ולא של המסך הראשי) מגדירים את שלושת הקריטריונים: Category מסוג DEFAULT, Action מסוג VIEW, ו-Data עם MIME type בשם text/plain, כלומר טקסט רגיל ולא וידאו, אודיו או תמונות.Present Text, עם package name שונה (אחרת אי אפשר להריץ את שתיהן על אותו מכשיר). בלחיצה על לחצן Show some text יוצרים Intent, מוסיפים addCategory(Intent.CATEGORY_DEFAULT), setAction(Intent.ACTION_VIEW), setType("text/plain") ו-putExtra("text to present", "Hello, this is a sample text").resolveActivity ואז startActivity, ואחרת מציגים Toast.הטקסט המלא של הדקות הראשונות בהרצאה «Receive Implicit Intent» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שבנינו מספר implicit intents שמפעילים אקטיביטי באפליקציה אחרת, בואו נראה איך אנחנו יכולים לבנות אפליקציה שיש בה איזושהי אקטיביטי עם הגדרות ספציפיות, כך שאפליקציות אחרות יוכלו לבצע implicit intent ולקרוא לאקטיביטי הזאת שנמצאת באפליקציה שלנו.
מה שאנחנו רוצים לעשות זה לבנות משהו שנקרא טקסט פד, זה בעצם איזושהי אפליקציה שמסוגלת להציג טקסט. עכשיו אפליקציות אחרות שרוצות להציג מידע טקסטואלי בצורה קצת יותר מרשימה יוכלו להפעיל את האפליקציה שלנו, לתת לה את הטקסט והאפליקציה שלנו פשוט תציג
להם את הטקסט. במיין אקטיביטי שלנו כל מה שנעשה זה רק נציג איזושהי הודעה שאנחנו בעצם אפליקציית טקסט פד, אבל אפליקציות אחרות לא יגלשו ל-Main Activity אלא יגלשו לאיזושהי Activity אחרת ספציפית שתהיה מסוגלת להציג את הטקסט שלהם.
אז בואו נבנה את זה. יש לנו את האפליקציה, כרגע אין בה כלום. יש לנו Main Activity וב-Main Activity נציג טקסט View, ניקח Match Parent ונגדיר כאן איזשהו Gravity Center שהטקסט יהיה באמצע, נגדיר טקסט סייז 20 SP, נגדיר טקסט טקסט פאד, נרד פה איזה שתי שורות The Ultimate Text Viewer.
זאת אומרת מה שאנחנו מציגים כרגע זה סך הכל איזושהי הודעה כזאת שאם מישהו יריץ את האפליקציה שלנו זה מה שהוא יראה, אבל למעשה אנחנו לא מעוניינים במיין אקטיביטי שיוצג אלא אנחנו מעוניינים להציג איזושהי אקטיביטי אחרת שתוכל להציג טקסט שישלחו לה.
אז בואו נוסיף את האקטיביטי הזאת. הנה יש לנו את האפ, מכה שימני, New, Activity, ואנחנו בוחרים ב- Empty Activity.
כעת אנחנו מגדירים את השם של האקטיביטי, בואו נקרא לה TextPad Activity. כמו שיש כאילו Notepad שמאפשר גם לצפות בטקסט וגם לערוך טקסט, אז אנחנו המצאנו איזשהו שם טקסט פאד שמסוגל רק להציג טקסט מבלי האפשרות לערוך אותו.
בואו נבצע פיניש, הנה יש לנו את ה-tivity והנה יש לנו את ה-linear layout שלה שאנחנו רוצים כאן, בעצם בואו ניקח frame layout, זה יהיה קצת יותר הגיוני להצגת טקסט, ניפטר פה מכל מה שאנחנו לא צריכים, נגדיר פה padding 16,
נגדיר כאן איזשהו background, נאתר איזשהו background באיזשהו צבע אדום כהה קצת, וכעת אנחנו יכולים לבנות scroll view, כי יכול להיות שהטקסט הוא טקסט רב ואנחנו רוצים לאפשר ליוזר לגלול אותו.
נגדיר לטקסט view scroll bars בצורה ורטיקלית. הנה יש לנו פה את הטקסט view שיציג את הטקסט של היוזר. בואו נגדיר כאן ID, טקסט view data ונגדיר טקסט color לבן כדי שיראה טוב על הרקע של האדום ובואו נגדיר טקסט size 25 sp והנה ארגנו לעצמנו איזושהי אקטיביטי
שמסוגלת להציג טקסט אם יש לי כאן איזשהו טקסט ככה הוא נראה אנחנו לא רוצים להגדיר פה כרגע טקסט כי אנחנו רוצים שהאפליקציה אחרת פותח אותנו ותשלח אלינו את הטקסט שלה.
הדבר הבא שאנחנו רוצים לבצע זה לבנות את הקוד של ה-Java של ה-TextPad. בקוד ה-Java אנחנו רוצים לאתר את ה-TextView שבנינו, בואו ניקח private text view, קראנו לו text view data, אנחנו מעוניינים לאתר אותו ולהכניס אליו את המידע ששולחים אלינו.
הנה יש לנו text view, mind view by ID והנה איתרנו אותו. כעת ב-onCreate אנחנו רוצים ליצור אובייקט intent, intent שווה getIntent, זה הנקודה שאנחנו רוצים, כי אנחנו רוצים לקבל את ה-intent שהפעיל אותנו כ-activity, להוציא ממנו איזושהי מחרוזת, בואו נקרא לה text to present,
intent.getStringExtra ועכשיו אנחנו ממציאים שמי שרוצה להפעיל אותנו חייב לספק לנו טקסט to present. זה אקסטרה שחייבים לתת לנו וכאן בעצם יש את הטקסט שמעוניינים להציג.
מי שמשתמש בנו צריך בעצם לדעת את זה אולי על ידי דוקומנטציה שאנחנו מפרסמים, אולי על ידי פרסום המידע הזה באתר האינטרנט שאנחנו מפרסמים את האפליקציה, תיאור האפליקציה, הוא צריך לדעת שזה מה שהוא צריך לשלוח.
ואז הוא שולח לנו ואנחנו יכולים פשוט לבנות ל-text view data ו-to set text, text to present. והנה סיימנו לבנות את קוד ה-Java של ה-activity שנקראת text-pad activity.
הדבר הבא שאנחנו צריכים לעשות זה להגדיר מהם הגדרות ה-implicit intent שצריכים לכתוב בשביל להפעיל את ה-activity. זה מתבצע בקובץ ה-manifest בתגית של ה-activity.
אז הנה אנחנו רואים שיש לנו בעצם שתי תגיות של activity, אחת של ה-main activity, אנחנו לא רוצים שמבחוץ יפעילו את ה-main activity, הוא בעצם רק מסך פתיחה כזאת, אנחנו לא מתעסקים איתו, זאת האקטיביטי שמעניינת אותנו שאותה האימפליסיט אינטנט צריך להפעיל.
אז באקטיביטי של הטקסט פאד מה שאנחנו רוצים להגדיר זה את אותו אינטנט פילטר. והאינטנט פילטר הזה שלמדנו עליו יגדיר מה הם הקריטריונים שצריכים להכניס לאימפליסיט אינטנט בשביל להגיע בדיוק לאקטיביטי הזאת.
ואנחנו יודעים שהקריטריונים האלה מתחלקים לשלושה חלקים קטגורי, אקשן ודאטה. אוקיי, אז בואו נגדיר כל אחד מהם. אם אין לנו קטגוריה ספציפית, אז אנחנו יכולים פשוט לבחור בקטגוריה שנקראת דיפולט, ואז יצטרכו פשוט להגדיר דיפולט, וזה בעצם יאתר אותנו כקטגוריה.
אקשן, אנחנו רוצים to view, כי האקטיביטי הזאת מיועדת רק להצגה של טקסט, אז הנה הגדרנו את האקשן. הדאטה זה בעצם אותו לינק שמאפשר להגיע אלינו ואם אתם זוכרים חלק מהלינק הזה הגדיר את המים טייפ, אז בואו נגדיר את המים טייפ כtext/plane.
זה פשוט אומר שסוג המידע שאנחנו מצפים לקבל חייב להיות טקסט רגיל ולא וידאו או אודיו או תמונות או משהו כזה, כי אנחנו מציגים טקסט רגיל.
חוץ מזה אין לנו איזשהו לינק שצריך להשתמש בו בשביל להגיע אלינו. אז הנה הגדרנו עבור האקטיביטי טקסט פאד אקטיביטי איזשהו אינטנט פילטר עם שלושת הקטגוריות או ליתר דיוק שלושת הקריטריונים שלמדנו ועכשיו מי שרוצה להשתמש בנו יצטרך לספק בדיוק את שלושת האלמנטים האלה ואז הוא יגיע אלינו.
אז הדבר הראשון שאנחנו רוצים לעשות זה פשוט להריץ את האפליקציה בכדי לראות שאין פה שום שגיאות והיא עובדת כמו שצריך. אז הנה אנחנו רואים את האפליקציה רצה על האמולטור, והנה אנחנו רואים את האפליקציה רצה על המכשיר האמיתי.
כאן אין משהו שמפעיל את ה-activity של ה-text-pad activity, כי זה לא מיועד להפעלה מהאפליקציה הזאת, במקרה הזה, בדוגמה שלנו.
מה שאנחנו רוצים לעשות זה להפעיל את ה-text-pad אקטיביטי מאפליקציה אחרת על ידי implicit intent. לצורך כך אנחנו צריכים אפליקציה אחרת.
אז אנחנו אפילו יכולים לבצע סגירה של האפליקציה שלנו באמולטור ובמכשיר האמיתי. בואו נסגור אותם ואנחנו רוצים לבצע הפעלה של אפליקציה אחרת לגמרי מתוך אנדרואיד סטודיו.
אז בואו ניגש ובכלל נסגור לגמרי את האפליקציה הזאת ונבנה אפליקציה חדשה.