قراءة ملفات txt داخل تطبيقات اندرويد برمجياً -طريقة مميزة

بسم الله الرحمن الرحيم

اليوم إن شاء الله رح نأخذ طريقة جداً رائعة و الجميع يحتاجها, لا يكاد تطبيق يخلو من النصوص الطويلة, أو نبذة تعريفية أو أو .. هذه الطريقة تستفيد منها في وضع نصوص طويلة بطريقة مختصرة.

في البداية أحب أن أوضح أنني لا استخدام هذه الطريقة لسبب .. أن الملفات الخارجية txt,tts,mp3,html,jpg وغيرها من الصيغ الاخرى المستخدمة حاول التقليل منها قدر الإمكان, لأنه بسهولة يستطيع اي شخص استخراجها من تطبيقك واعادة استخدامها.

كما إنني سابقاً ذكرت سرقت تطبيقي وهي كانت خطأ مني بإستخدام النصوص بملفات html لكي أصيغها وأنسقها بشكل مناسب وأنيق. ومن ذلك أكرر لكم قللوا من استخدام الملفات الخارجية وهي التي تستخدم داخل مجلد assets,raw,xml,drawable .

+ ذكرت إن الطريقة مميزة لأنها توفر عليك الكثير من الأوامر البرمجية سواء كانت برمجياً java أو إضافة الكثير من النصوص xml.

حسناً في البداية سوف أقوم بكتابة ملف نصي abboudi.txt وأضعه داجل مجلد assets.

سوف أستخدام في النص , رقم جوال وبريد إلكتروني وموقع إلكتروني. وهذا ما قصدته بإنه سوف يوفر عليك كتابة بعض الاوامر البرمجية, ففي حال ضغطت على الرقم سوف ينتقل بك مع الرقم الى الهاتف, وعند الضغط على البريد الالكتروني سوف ينتقلك الى البريد الالكتروني الخاص بك لارسال رسالة للعنوان المكتوب, وعند الضغط على الموقع الالكتروني سوف يتم فتح هذا الموقع من داخل المتصفح الافتراضي في جهازك.

ملف الجافا الرئيسي : Main.java

package com.andrody.test;


import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Main extends Activity {
    TextView Text;
    StringBuilder sb;
    InputStream is;
    BufferedReader reader;
    String result;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {
            result="";
            sb = new StringBuilder(); // بناء سترنج متعدد اي يحتوي على قيم عديدة او سلسلة متغيرة
            is = this.getAssets().open("abboudi.txt"); // الوصول الى الملف النصي
            reader = new BufferedReader(new InputStreamReader(is, "UTF8")); // قارئ بفرد وهو يستخدم عادة لقراءة الملفات الضخمة, وسوف يقرأ من الملف النصي
            if (is!=null) { // اذا تم ايجاد الملف
                while ((result = reader.readLine()) != null) { // قم بقراءة البفرد المدخل سطر سطر اي بشكل سليم ووضعه داخل سترنج str
                    sb.append(result + "\n" ); // السترنج الذي تم بنائه في البداية قم بإضافة داخله الـسترنج str الذي تخزن داخله الملف النصي
                }
            }
            Text = (TextView) findViewById(R.id.TextView); // تعريف النص وربطه بالاي دي الخاص به .. النص الذي تريد وضعه داخله الملف النصي
            Text.setText(sb); // استخدم سلسلة السترنج التي تم بنائها وتخزين الملف النصي داخلها في محل النص المحدد
            is.close(); // اغلاق الادخال
        } catch (IOException e) { // هنا توضع الاوامر اذا ظهر اي خطأ وغالباً ما تستخدم رسالة توست لتخبرك ما هو الخطأ
        }
      }


}

وضعت سطور التعليقات البسيطة وهي تفيد المبدئين فقط, ولكي تفهم كل من المصلطحات الجديدة عليك ابحث عنها في موقع المطوريين فلكل منها شرح طويل, و أغلب شروحات موقع المطوريين صعب أن تفهمه كشخص عربي, إلا الذي دارس هذا المجال.

main.xml /

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffe1e7e9">
<TextView
        android:id="@+id/TextView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:autoLink="all"
        android:textColorLink="#f00"
        android:linksClickable="true"
        android:scrollbars="vertical"
        android:padding="20dp"
        android:textSize="15sp"/>

</LinearLayout>

لاحظ في ملف اللياوت, استخدمت خصائص للنص منها :
– autoLink=”all” / تمميز الروابط جميعها.
– textColorLink=”#f00″ / تلوين الرابط باللون الأحمر وتستطيع تغييره.
– linksClickable=”true” / تفعيل الضغط على الروابط.
– scrollbars=”vertical” / تفعيل التمرير بشكل عمودي للاعلى والاسفل اذا كان النص طويل.
– padding=”20dp” / الحشوة الداخلية وهي البعد بين اطراف العنصر تكست فيو وبين النص الذي داخله.
– textSize=”15sp” / حجم النص.

معاينة : ( اضغط على الصورة لتكبيرها ).

  • صورة 1
  • صورة 2
  • صورة 3
device-2015-05-22-083726
device-2015-05-22-083755
device-2015-05-22-083839

انتظرونا في دروس قادمة وجديدة .. والسلام عليكم 🙂

عن عبدالقادر عليوي

مواليد 1996 , سوري الجنسية, طالب علم, لدي شغوف كبير في تعلم كل ما يتعلق بالانترنت من تطوير وحماية, أحب القراءة كثيراً .. هدفي نشر العلم بشتى أنواعه ومجالاته, متابع من الدرجة الأولى لـ الدكتور ابراهيم الفقي و الشيخ أحمد ديدات - رحمهم الله -.

شاهد أيضاً

التقنيات التي نستطيع برمجة تطبيقات والعاب الاندرويد بها

هل أنت محتار من أين تريد البدأ في مجال برمجة التطبيقات للهواتف الذكية أو الألعاب عالية الاداء ؟ تعرف في هذا المقال عن اللغات والتقنيات واختر منها ما يناسبك لدخول هذا المجال

تعلم برمجة تطبيق اندرويد لمدونتك البلوجر (1)

هل لديك تدوينة أو موقع إخباري ؟ أو معرض يعرض الكثير من البيانات من وسائط ؟ وبحاجة لعرضها في تطبيق اندرويد ؟ هذه فرصتك من هنا وللمبتدئين تعلم برمجة تطبيق لمدونتك

عرض صورة في التطبيق من فايربيس

بسم الله الرحمن الرحيم اليوم سيكون شرحنا عن كيفية عرض صورة  في التطبيق من قاعدة …

19 تعليقات

  1. اسماعيل المؤيد

    اشكرك من اعماق قلبي 🙂
    لاني بحثت عن هذي الطريقة طووويلاً ولم اجد حلاً الا في موقعك 🙂

  2. اسماعيل المؤيد

    السلام عليكم .. اشكرك ع الدرس .. ولكن عندي سؤال
    ان اردت ان اضع اكثر من ملف txt داخل برنامجي
    ماذا افعل ؟؟؟

  3. اذا اردت ان اكتب داخل الملف txt وحفظه

  4. الملف عندى يتم قرأته اذا كان باللغه الانجليزيه
    اما اذا كان باللغه العربيه فتظر علامات نجوم وبداخلها علامة استفهام

  5. شكرا اخى عبد القادر انت انسان فى قمة الروعه والموضوع اتحل خلاص بالطريقه اللى قولتها

    عندى سؤال معلش :
    انا التطبيق بتاعى فيه زرار واحد بس بيدخل على موقعى وحاطط اعلانات ادموب
    هل ده مخالف للقوانين
    وماذا اذا وضعت اكثر من زر غير مربوطين بموقع الويب هل هذا يحمينى

    • العفو وشكراً لك من ذوقك اخي 🙂 ..

      نعم اخي مخالف, وعلى الاغلب لن يتم قبول نشره في المتجر, حالياً يوجد تدقيق كبير على هذا الموضوع ..

      استخدام موقعك في تطبيق يجب ان يكون مع خدمات او وظائف اخرى بالتطبيق ..

  6. اخى اذا وضعت ازرار اخرى زر كل زر به معلومات مختلفه عامه ، ثقافيه هكذا بجانب التطبيق هل هذا مسموح به

  7. شكراً اخي بس عندي سوال اذا بدي اقراء من ملف من سلفر او موقع ليس من داخل مجلد assets

  8. سلام عليكم
    ممكن تخبرني كيف ان شائت ملف نصي abboudi.txt ووضعته داخل مجلد assets.

  9. اخي العزيز شكرا جدا لما تقدمه من مساعدات كثيره للجميع بدون استثناء وبدون مقابل ولكن لدي طلب اني مبتدا في الاندرويد ودرست اساسيات الجافا ومن ثم بعض كورسات الاندرويد واريد ان انشا تطبيق بسيط ولدي فكرته وهي ببساطه عند الضغط علي الزر ينتقل بك الي اكتيفتي اخري وهذه الاكتفتي به نص طويل وهنا المشكله اني اريد تنسيق النص ولكن لا استطيع وجد طريقتك ولكن صراحه لم افهمه فرجاء توضيح ومساعدتي

  10. اسامة الصرمي

    السلام عليكم يا اخي الكريم انا اريد ان اظهر ملف file.docx وورد بدل txt هل ممكن لان اريد ان الون النصوص كل فقرة بلون

  11. السلام عليكم اخي ماذا عن بقيه انواع الملفات مثل ملفات pdf كيف اجعل البرنامج يقرأ انواع محدده من الملفات؟؟؟

  12. السلام عليكم اخي العزيز عملت ListView  والان جاهزة اريد فقط عند الضغط على عنوان يفتح text.txt مختلف عن الاخر من ملف Asset بمعنى لو افترضنا العنوان الاول في ListView تاريخ عند الضغط عليه يفتح Text.txt يختص بالتاريخ .وعند الضغط على عنوان رياضات يفتح Text.txt يختص بالرياضيات وهكذا للباقي ..انا عملت تطبيق مشابه لكن من خلال WebView  اما الان احببت ان يكون ملفات Text.txt  بدل WebView

ضع بصمتك بتعليق يعبر عن امتنانك

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.