خواندن فایل Notepad از یک آدرس و نمایش آن در TextView

سه شنبه 10 مرداد 1396

در این مقاله قصد داریم یک فایل Notepad را که در یک آدرس در نت بار گذاری شده با زدن یک کلیک خوانده شود و متن مورد نظر را در یک textview نمایش دهیم معمولا این را در اپلیکیشن هایی که نیاز به آدرس اینترنتی دارد نمایش می دهیم.

خواندن فایل Notepad از یک آدرس و نمایش آن در TextView

این متن مورد نظر در آدرس مورد نظر ذخیره می شود و هر موقع بخواهید دنبال آدرس رفته و متن در یک textview بار گذاری و نمایش داده می شود برای این کار باید یک مجوز دسترسی داده شود.

<uses-permission android:name="android.permission.INTERNET" />

کلاس مورد نظر به صورت زیر می باشد

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    String TextFileURL = "http://www.android-examples.com/wp-content/uploads/2016/11/sample-text-file.txt" ;
    TextView textView ;
    Button button ;
    URL url ;
    String TextHolder = "" , TextHolder2 = "";
    BufferedReader bufferReader ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView)findViewById(R.id.textView);

        button = (Button)findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                new GetNotePadFileFromServer().execute();

            }
        });

    }

    public class GetNotePadFileFromServer extends AsyncTask<Void, Void, Void>{

        @Override
        protected Void doInBackground(Void... params) {

            try {
                url = new URL(TextFileURL);

                bufferReader = new BufferedReader(new InputStreamReader(url.openStream()));

                while ((TextHolder2 = bufferReader.readLine()) != null) {

                    TextHolder += TextHolder2;
                }
                bufferReader.close();

            } catch (MalformedURLException malformedURLException) {

                // TODO Auto-generated catch block
                malformedURLException.printStackTrace();
                TextHolder = malformedURLException.toString();

            } catch (IOException iOException) {

                // TODO Auto-generated catch block
                iOException.printStackTrace();

                TextHolder = iOException.toString();
            }

            return null;

        }

        @Override
        protected void onPostExecute(Void finalTextHolder) {

            textView.setText(TextHolder);

            super.onPostExecute(finalTextHolder);
        }

    }


}

لایه ی xml به صورت زیر است

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.android_examples.readtextfromurl_android_examplescom.MainActivity"
    android:background="#FFF8E1">


    <Button
        android:text="Click here to show online Notepad file into textview "
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/button" />

    <TextView
        android:text="Your Text File text disply here"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:textColor="#000000"
        android:textSize="20dp"
        android:gravity="center"
        android:layout_marginBottom="74dp"
        android:padding="5dp"
        android:layout_above="@+id/button"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

کلاس android manifest در آخر به صورت زیر خواهد بود

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android_examples.readtextfromurl_android_examplescom">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

خروجی کار به صورت زیر است:

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید