скачать файл Android - PullRequest
       5

скачать файл Android

0 голосов
/ 14 октября 2010

Привет, ребята, я здесь, в Австрии, как у вас дела?

Я начал разработку Android и пишу свое небольшое приложение, которое получает файлы с сервера для отображения информации в ListView.Я действительно потратил день, чтобы позаботиться о лучшем и простейшем способе получения файлов с сервера.Однако я написал программу и проверил ее - и теперь у меня появляется серьезное сообщение об ошибке при запуске виртуальной машины HTC.

Его называют: Приложение org.me.newspuler (процесс org.me.newspuler) неожиданно остановилось.Пожалуйста, попробуйте еще раз.

Под этим сообщением помещена кнопка " Force Close ".

Я действительно не знаю, как получить подсказку о проблеме,NewsPuler - это мое приложение, - мне кажется, мне нужна помощь еще нескольких proffs

У меня есть 2 класса - один для файла загрузки (я думаю, что здесь есть ошибка) - один для основного действия, когда компилятор приходит кточка в коде, где создается экземпляр из «DownloadFile» ... появляется ошибка.

класс загружаемого файла:

package logik;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author raa
 */
public class DownloadFile {
    InputStream is = null;
    String link = null;
    BufferedReader d = null;
    URL url = null;
    String s;
    ArrayList<String> al = new ArrayList<String>();


    public  DownloadFile(String link) throws MalformedURLException{
        this.link = link;
        url = new URL(link);

        try {
            is = url.openStream();
        } catch (IOException ex) {
            Logger.getLogger(DownloadFile.class.getName()).log(Level.SEVERE, null, ex);
        }

        d = new BufferedReader(new InputStreamReader(is));
        try {
            while ((s = d.readLine()) != null) {
                al.add(s);
            }
        } catch (IOException ex) {
            Logger.getLogger(DownloadFile.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public ArrayList getArrayList(){
        return al;
    }
}

А вот здесь ( работает корректноесли вы оставите закомментированный код, но когда вы раскомментируете его - не )

пакет org.me.newspuler;

import logik.DownloadFile;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;



/**
 *
 * @author raa
 */
public class MainActivity extends Activity {
    ArrayList<String> al;
     DownloadFile df;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        ListView myListView = (ListView)findViewById(R.id.myListView);
//        try {
//            df = new DownloadFile("http://www.google.at/");
//
//        } catch (MalformedURLException ex) {
//            Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
//        }

            //        al.add("Test");
            //         final ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
            //                android.R.layout.simple_list_item_1, al);
            //
            //         myListView.setAdapter(aa);


    }

}

Я был бы очень рад получить помощь!С наилучшими пожеланиями, из Австрии.

Ответы [ 3 ]

0 голосов
/ 14 октября 2010

НЕ использовать классы ведения журналов Java import java.util.logging.Logger;. Используйте класс android logcat.

0 голосов
/ 14 октября 2010

Я тестировал код сейчас в одном классе - кажется, что есть проблема с openStream. я получаю исключение UnknownHostException, когда проверяю только URL-адрес.

0 голосов
/ 14 октября 2010

выглядит как твоя попытка позвонить

al.add("Test");

когда al равен нулю. Это определенно приведет к краху приложения.

изменить объявление al на

ArrayList<String> al = new ArrayList<String>();

Могут быть и другие проблемы, но именно они мне действительно нравятся.

Я рекомендую использовать android logcat для получения конкретной информации об ошибке.

Я использую Eclipse и плагины для разработки.

учебник здесь.

http://d.android.com/guide/developing/eclipse-adt.html

правильная отладка поможет вам.


в ответ на то, что вы сказали, попробуйте это.

public class Tester extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ArrayList<String> list = null;
    try {
        list = DownloadFile("http://www.google.com");
    } catch (Exception e) {
        Log.i("File Download Test", e.getLocalizedMessage(), e);
    }
    if (list != null)
        for (String s : list)
            Log.i("File Download Test", s);
}

public ArrayList<String> DownloadFile(String link) throws ClientProtocolException, IOException, URISyntaxException {
    ArrayList<String> al = new ArrayList<String>();
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(new URI(link));
    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    InputStream is = null;
    try {
        is = entity.getContent();
    } catch (IOException ex) {
        Log.i("", ex.getMessage(), ex);
    }
    BufferedReader d = new BufferedReader(new InputStreamReader(is));
    String s = null;
    try {
        while ((s = d.readLine()) != null) {
            al.add(s);
        }
    } catch (IOException ex) {
        Log.i("", ex.getMessage(), ex);
    }
    return al;
}

}

и убедитесь, что в вашем манифесте есть разрешение на доступ в Интернет

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.tester"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Tester"
              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>
<uses-permission
    android:name="android.permission.INTERNET"></uses-permission>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...