2017-10-18 2 views
0

문제가 있습니다. 내 앱의 사용자가 ACTION_GET_CONTENT을 사용하여 저장소에서 오디오 파일을 선택하도록하고 싶다면 mainActivity가 충돌합니다.사용자로부터 uri를받을 때 내 응용 프로그램이 충돌 함

 public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.setType("audio/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(intent,1); 
      audioPath = intent.getData().getPath(); //This is were the crash happens 
      audio = Uri.parse(audioPath); 

     } 

나는 안드로이드 프로그래밍에있어 새로운 것이며 분명히 이해하지 못하는 것이있다. 오류는 다음과 같습니다. java.lang.NullPointerException : null 객체 참조에서 가상 메소드 'java.lang.String android.net.Uri.getPath()'을 호출하려고 시도했습니다.

+0

충돌하는 부분을 시작하여'onActivityResult'에서 더 잘 수행 할 수 있습니다. 이제'Activity'를 시작한'Intent'를 사용하고 있습니다. 사용자가 데이터를 제공하지 않기 때문에 데이터의 경로를 얻을 때 NPE를 얻게됩니다. – 0xDEADC0DE

답변

1

너의 활동. 과 같은 의도를 사용하지 마십시오. onActivityResult 방법으로 반환 된 Intent을 사용해야합니다. 그래서 코드가 있어야한다 :

이 그런 다음이 방법에 대한 자세한 내용은

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     //The intent from this method is the one you need to get data from! 
     if (requestCode == 1) { 
     // Make sure the request was successful 
      if (resultCode == RESULT_OK) { 
       audioPath = intent.getData().getPath(); 
       audio = Uri.parse(audioPath); 
       } 
     } 
    } 

로하여 onActivityResult 메서드를 재정의 오디오

public void onClick(View v) { 
     Intent intent = new Intent(); 
     intent.setType("audio/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(intent,1); //This 1 is your request code remember it 
    } 

을 선택하는 당신의 방법이어야하며, 활동 결과 check this official training from Android에서 데이터를 수신합니다. 해피 코딩!

+0

사용자가 무언가를 선택하면 자동으로 호출됩니다. 이것은'startActivity'가 아니라'startActivityForResult'를 사용하는 경우에만 해당됩니다. 또한 한 번만 재정의하십시오. 사용자가 이미지 나 다른 것을 선택하기를 원한다고해도 다른 요청 코드를 전달하십시오. 귀하의 질문에 대해서는 요청 코드를 1로 통과 시켰습니다. 오디오를 선택하고 요청 코드가 1인지 먼저 확인한 다음 의도로부터 값을 검색합니다! 그래서 사용자가 이미지를 고르기를 원한다면 다른 int를 사용하여 2 또는 다른 것을 말할 수 있습니다! – Xenolion

+0

대단히 감사합니다 !! 매력처럼 작동합니다. – Dimitris

+0

당신은 환영합니다! – Xenolion

관련 문제