나는 Ficklr에서 이미지를 다운로드하고 ImageView에로드하기 위해 안드로이드에 간단한 앱을 개발 중입니다. 문제를 피하기 위해 asyncTask와 브로드 캐스트 수신기를 사용하고 있습니다. 내가 그것을 실행하려고하면 onReceive에서 JSON 응답 witout 문제가 발생합니다. 내가 onReceive에서 실행하려고하면 그러나 플리커 이미지를로드하는 또 다른 방법 (searchPhoto이) 나는이 오류를 얻을 :Android 브로드 캐스트 수신, 추가 기능 추가 기능
01-19 22:24:25.914: E/AndroidRuntime(28284): FATAL EXCEPTION: main
01-19 22:24:25.914: E/AndroidRuntime(28284): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.jalbacar.restapi.SEARCH (has extras) } in [email protected]
01-19 22:24:25.914: E/AndroidRuntime(28284): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:905)
01-19 22:24:25.914: E/AndroidRuntime(28284): at android.os.Handler.handleCallback(Handler.java:587)
01-19 22:24:25.914: E/AndroidRuntime(28284): at android.os.Handler.dispatchMessage(Handler.java:92)
01-19 22:24:25.914: E/AndroidRuntime(28284): at android.os.Looper.loop(Looper.java:123)
01-19 22:24:25.914: E/AndroidRuntime(28284): at android.app.ActivityThread.main(ActivityThread.java:4668)
01-19 22:24:25.914: E/AndroidRuntime(28284): at java.lang.reflect.Method.invokeNative(Native Method)
01-19 22:24:25.914: E/AndroidRuntime(28284): at java.lang.reflect.Method.invoke(Method.java:521)
01-19 22:24:25.914: E/AndroidRuntime(28284): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
01-19 22:24:25.914: E/AndroidRuntime(28284): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
01-19 22:24:25.914: E/AndroidRuntime(28284): at dalvik.system.NativeStart.main(Native Method)
01-19 22:24:25.914: E/AndroidRuntime(28284): Caused by: java.lang.NullPointerException
01-19 22:24:25.914: E/AndroidRuntime(28284): at com.jalbacar.restapi.SearchActivity.searchPhoto(SearchActivity.java:89)
01-19 22:24:25.914: E/AndroidRuntime(28284): at com.jalbacar.restapi.SearchActivity$1.onReceive(SearchActivity.java:110)
01-19 22:24:25.914: E/AndroidRuntime(28284): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:892)
SearchActivity을
package com.jalbacar.restapi;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.client.methods.HttpGet;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.jalbacar.restapi.RestTask;
public class SearchActivity extends Activity {
private static final String SEARCH_ACTION = "com.jalbacar.restapi.SEARCH";
private static final String SEARCH_URI = "http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=xxxxxxxxxxxxxxxxxx&photoset_id=72157624057488617&format=json&jsoncallback=?";
private TextView result;
private ProgressDialog progress;
private Bitmap bmFlickr;
private ImageView imageFlickrPhoto;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Activity");
result = new TextView(this);
setContentView(result);
imageFlickrPhoto= (ImageView)findViewById(R.id.flickrPhoto);
//Create the search request
try{
HttpGet searchRequest = new HttpGet(new URI(SEARCH_URI));
RestTask task = new RestTask(this,SEARCH_ACTION);
task.execute(searchRequest);
//Display progress to the user
progress = ProgressDialog.show(this, "Searching", "Waiting For Results...", true);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
registerReceiver(receiver, new IntentFilter(SEARCH_ACTION));
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
public void searchPhoto(){
URL FlickrPhotoUrl;
try {
FlickrPhotoUrl = new URL("http://farm5.staticflickr.com/4056/4659741303_4e994ba9aa_s.jpg");
HttpURLConnection httpConnection = (HttpURLConnection) FlickrPhotoUrl.openConnection();
httpConnection.setDoInput(true);
httpConnection.connect();
InputStream inputStream = httpConnection.getInputStream();
bmFlickr = BitmapFactory.decodeStream(inputStream);
if (bmFlickr != null){
imageFlickrPhoto.setImageBitmap(bmFlickr);
}
if(progress != null) {
progress.dismiss();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//bradcast receiver
private BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
//String response = intent.getStringExtra(RestTask.HTTP_RESPONSE);
//result.setText(response);
Toast.makeText(SearchActivity.this, "Galeria2", Toast.LENGTH_LONG).show();
searchPhoto();
}
};
대부분라도 유용 간단한 문제 나 매우 분명 뭔가,하지만 나는 주니어 Android 개발자입니다. 그러니 인내심을 가져주십시오. 미리 감사드립니다