마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

카톡 프로필 사진처럼 한개의 이미지뷰 안에 내장된 사진을 받아올순없나요?

0 추천
public class ProfileActivity extends Activity {

 final static int SELECT_IMAGE=1;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.image);
   
   ImageView profileimage = (ImageView) findViewById(R.id.proflie_image);
   profileimage.setOnClickListener(new OnClickListener(){
    
    @Override
    public void onClick(View v){
     
     Intent intent = new Intent(
       Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
     /*
     Uri uri=android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
     Intent intent = new Intent(Intent.ACTION_PICK, uri);*/
     startActivityForResult(intent, SELECT_IMAGE);
    }
   });
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode,  resultCode, data);
   
   if(requestCode == SELECT_IMAGE && resultCode == RESULT_OK && null != data ){
    Uri image=data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(image, filePathColumn, null, null, null);
    cursor.moveToFirst();
    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String picturePath = cursor.getString(columnIndex);

          cursor.close(); 



   /*
   Bitmap bitmap = null;
   if (resultCode == RESULT_OK && requestCode == SELECT_IMAGE){
    Uri image=intent.getData();
    try{
     bitmap=Images.Media.getBitmap(getContentResolver(), image);
    } catch (FileNotFoundException e) {
     e.printStackTrace();
    } catch (IOException e){
     e.printStackTrace();
    }
    */
    ImageView profileimage = (ImageView) findViewById(R.id.proflie_image);
    profileimage.setImageBitmap(BitmapFactory.decodeFile(picturePath));
   }
  }
}






11-12 00:23:16.565: E/AndroidRuntime(17609): FATAL EXCEPTION: main
11-12 00:23:16.565: E/AndroidRuntime(17609): Process: com.example.profile, PID: 17609
11-12 00:23:16.565: E/AndroidRuntime(17609): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/233551 }} to activity {com.example.profile/com.example.profile.ProfileActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/233551 from pid=17609, uid=10147 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3384)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3427)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.ActivityThread.access$1300(ActivityThread.java:139)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1248)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.os.Handler.dispatchMessage(Handler.java:102)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.os.Looper.loop(Looper.java:136)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.ActivityThread.main(ActivityThread.java:5103)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at java.lang.reflect.Method.invokeNative(Native Method)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at java.lang.reflect.Method.invoke(Method.java:515)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at dalvik.system.NativeStart.main(Native Method)
11-12 00:23:16.565: E/AndroidRuntime(17609): Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/233551 from pid=17609, uid=10147 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.os.Parcel.readException(Parcel.java:1465)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.content.ContentProviderProxy.query(ContentProviderNative.java:413)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.content.ContentResolver.query(ContentResolver.java:464)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.content.ContentResolver.query(ContentResolver.java:407)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at com.example.profile.ProfileActivity.onActivityResult(ProfileActivity.java:46)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.Activity.dispatchActivityResult(Activity.java:5467)
11-12 00:23:16.565: E/AndroidRuntime(17609):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3380)
11-12 00:23:16.565: E/AndroidRuntime(17609):  ... 11 more

 카톡프로필을 보면 바로 이미지를 선택하여

 거기서 사진 선택 후 바로 그 이미지에 선택한 사진이 불러와지는데

 위의 방법대로 하려니 자꾸 오류가 나네요ㅠㅠㅠ도와주세요

 어플을 실행하면 imageview의 그림을 클릭하면

 폰에 내장된 사진을 볼 수 있는데 그 사진을 선택하면 바로 어플리케이션이 종료가 되요..

팟타이치느 (170 포인트) 님이 2014년 11월 12일 질문

2개의 답변

0 추천
 
채택된 답변
카스토리 이미지를 가져오는 루틴을 c#으로 구현한게 있는데..

웹으론 그냥 불러지지만 그림을 다운로드 하려면 url이 다를거에요

카카오톡 api 안드로이드 버젼을 쓰시거나 파싱으로 가져오려면  url이 어떻게 되어 있는지

확인를 해보세요

 

doridori2013@nate.com
익명사용자 님이 2014년 11월 12일 답변
팟타이치느님이 2014년 12월 1일 채택됨
0 추천
혹시 android.permission.READ_EXTERNAL_STORAGE 넣지 않으신건 아니세요??
밍이~ (5,780 포인트) 님이 2014년 11월 12일 답변
...