Monday, April 18, 2011

Read Text file from internet, using Java code

This exercise show how to read text file from internet. The file's url is hard coded to be "http://sites.google.com/site/androidersite/text.txt".

Read Text file from internet, using Java code

package com.exercise.AndroidInternetTxt;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

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

public class AndroidInternetTxt extends Activity {

TextView textMsg, textPrompt;
final String textSource = "http://sites.google.com/site/androidersite/text.txt";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textPrompt = (TextView)findViewById(R.id.textprompt);
textMsg = (TextView)findViewById(R.id.textmsg);

textPrompt.setText("Wait...");

URL textUrl;
try {
textUrl = new URL(textSource);
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream()));
String StringBuffer;
String stringText = "";
while ((StringBuffer = bufferReader.readLine()) != null) {
stringText += StringBuffer;
}
bufferReader.close();
textMsg.setText(stringText);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
textMsg.setText(e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
textMsg.setText(e.toString());
}

textPrompt.setText("Finished!");

}
}


main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<TextView
android:id="@+id/textprompt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/textmsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>


Modify AndroidManifest.xml to grant permission of "android.permission.INTERNET".
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.exercise.AndroidInternetTxt"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AndroidInternetTxt"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>
</manifest>


Download the files.

20 comments:

  1. hi i am able to get the output screen on the emulator still
    Hello World,AndroidInternetTxtActivity.

    the output which is on the text.txt file is not being displayed. can any one tell what could have gone wrong?

    ReplyDelete
  2. hello deepi,

    can you see the text "Finished!"? and some error message?

    If not, means the app is still running. It's suggested to test on real device.

    I tried on real device, even disable INTERNET, mis-spell textSource, it will display error message.

    ReplyDelete
  3. hi i am not able to see the finished text. i am using android emulator.
    i am getting an message like this

    "Unfortunately the AndroidInternetTxt has stopped.ok"

    can you please tell why this is happening so?

    ReplyDelete
  4. have you specify uses-sdk android:minSdkVersion="4" in AndroidManifest.xml?

    ReplyDelete
  5. ya i have specified this
    in the AndroidManifest.xml. but still i am having net connection not able to view the result from the emulator.

    ReplyDelete
  6. ya i am specified this
    uses-sdk android:minSdkVersion="10" in the AndroidManifest.xml. but still i am having net connection not able to view the result from the emulator.

    ReplyDelete
  7. hello deepi,

    I don't know is it your case. I found that it have a problem in case of android:minSdkVersion="10", please refer to the post android.os.NetworkOnMainThreadException.

    ReplyDelete
  8. ya i am able to get it. thank you.

    ReplyDelete
  9. but i want the text file in an search box column introduced and when i type the letter that sentence should be displayed. is it possible to do with the text file inside? i have tried to introduce an array . but ti show's error. how to create an search box for this internet file and access the text?

    ReplyDelete
  10. i want to test this code on an real time android device/mobile. what is the procedure for this ? is it necessary to build an separate path or any procedure to test on mobile ?

    ReplyDelete
  11. You have to generate the apk file, refer Generate signed APK for Android Application.

    On your device, open Setting -> Security, check to enable Unknown sources.

    Copy the APK file to your device's sdcard, click to install it.

    -------------------------
    Alternatively: If your development tools setup correctly, you can directly download, run, and debug on device in Eclipse.

    ReplyDelete
  12. Hi,
    I'm trying to read a text file from the internet with your method, but the
    Scanner s = new Scanner(url.openStream()); or BufferedReader(...)keeps throwing an exception.
    Do you have any idea why?

    ReplyDelete
  13. I am trying to read data from google spreadsheet in text format.. I am getting the data on android app but everything is in one line how can I make it to show in different lines.

    ReplyDelete
  14. I am trying to read data from google spreadsheet in text format.. I am getting the data on android app but everything is in one line how can I make it to show in different lines.

    ReplyDelete
  15. hi ,

    You mean your telling you have plenty number of lines and you not able to view the lines after the screen. Am i right Zuber Vohra ?

    ReplyDelete
  16. Hey, I tried to run this on an emulator, but all I'm getting is the word "Finished!", no actual text, what could be the problem?

    ReplyDelete
  17. The output only have one line.... i need a line by line text can any one help me out... plz

    ReplyDelete
  18. I have tried the above code to run app on android mobile.....but it is giving java.io.FileNotFoundException (No Such file or directory).....while i have rechecked my file path...it is correct...

    ReplyDelete
  19. First,I want to ask to run this on mobile ....is it necessary to have internet connection on mobile....?I have tried to run this on android mobile bot i am getting "Finished" ,no actual text and java.io.FileNotFoundException

    ReplyDelete
  20. Hi. Can you tell me how to read a zip file that contains a single file??

    ReplyDelete