hi am getting contact image fetching in my application then application is running but am getting error in cat log like this. how to resolve this problem ..see the below codehelp me
at java.io.BufferedInputStream.streamClosed(BufferedInputStream.java:118) at java.io.BufferedInputStream.read(BufferedInputStream.java:279)
loading image
--------------------
private Bitmap getContactImage(String mNumber) {
Bitmap cPhoto = null;
BufferedInputStream buf_stream = null;
Cursor cursorPhoto = getActivity().getContentResolver().query(
Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
Uri.decode(mNumber)), new String[] { PhoneLookup._ID },
null, null, null);
InputStream photo_stream = null;
if (cursorPhoto.moveToFirst()) {
String contactId = cursorPhoto.getString(0);
Uri contactPhotoUri = ContentUris.withAppendedId(
ContactsContract.Contacts.CONTENT_URI,
Long.parseLong(contactId));
try {
photo_stream = ContactsContract.Contacts
.openContactPhotoInputStream(getActivity()
.getContentResolver(), contactPhotoUri);
buf_stream = new BufferedInputStream(photo_stream);
cPhoto = BitmapFactory.decodeStream(buf_stream);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (buf_stream != null && photo_stream != null) {
try {
buf_stream.close();
photo_stream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
error in cat log
------------------------
GC_CONCURRENT freed 183K, 4% free 7135K/7431K, paused 8ms+8ms
05-31 10:08:51.518: W/System.err(968): java.io.IOException: BufferedInputStream is closed
05-31 10:08:51.538: W/System.err(968): at java.io.BufferedInputStream.streamClosed(BufferedInputStream.java:118)
05-31 10:08:51.549: W/System.err(968): at java.io.BufferedInputStream.read(BufferedInputStream.java:279)
05-31 10:08:51.569: W/System.err(968): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
05-31 10:08:51.569: W/System.err(968): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:493)
05-31 10:08:51.569: W/System.err(968): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:549)
05-31 10:08:51.569: W/System.err(968): at com.example.demologs.CallLogsFragment.getContactImage(CallLogsFragment.java:195)
05-31 10:08:51.589: W/System.err(968): at com.example.demologs.CallLogsFragment.readCallLogs(CallLogsFragment.java:126)
05-31 10:08:51.589: W/System.err(968): at com.example.demologs.CallLogsFragment.onStart(CallLogsFragment.java:53)
05-31 10:08:51.599: W/System.err(968): at android.support.v4.app.Fragment.performStart(Fragment.java:1484)
05-31 10:08:51.610: W/System.err(968): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:941)
05-31 10:08:51.618: W/System.err(968): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
05-31 10:08:51.618: W/System.err(968): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
05-31 10:08:51.629: W/System.err(968): at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:1866)
05-31 10:08:51.638: W/System.err(968): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:568)
05-31 10:08:51.638: W/System.err(968): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1133)
05-31 10:08:51.649: W/System.err(968): at android.app.Activity.performStart(Activity.java:4475)
05-31 10:08:51.649: W/System.err(968): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1928)
05-31 10:08:51.668: W/System.err(968): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
05-31 10:08:51.668: W/System.err(968): at android.app.ActivityThread.access$600(ActivityThread.java:122)
05-31 10:08:51.698: W/System.err(968): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
05-31 10:08:51.708: W/System.err(968): at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 10:08:51.708: W/System.err(968): at android.os.Looper.loop(Looper.java:137)
05-31 10:08:51.708: W/System.err(968): at android.app.ActivityThread.main(ActivityThread.java:4340)
05-31 10:08:51.719: W/System.err(968): at java.lang.reflect.Method.invokeNative(Native Method)
05-31 10:08:51.719: W/System.err(968): at java.lang.reflect.Method.invoke(Method.java:511)
05-31 10:08:51.738: W/System.err(968): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-31 10:08:51.738: W/System.err(968): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-31 10:08:51.748: W/System.err(968): at dalvik.system.NativeStart.main(Native Method)
If photo is not present on the contact then the InputStream
returned is null. You should check if photo_stream
is null, before trying to decode the image.
try {
photo_stream = ContactsContract.Contacts
.openContactPhotoInputStream(getActivity()
.getContentResolver(), contactPhotoUri);
if(photo_stream != null) {
buf_stream = new BufferedInputStream(photo_stream);
cPhoto = BitmapFactory.decodeStream(buf_stream);
}
} catch (Exception e) {
e.printStackTrace();
}
Also look at How do I load a contact Photo?