SD 카드에서 노래를 선택하려는 응용 프로그램을 만들었으므로 선택한 노래의 경로를 onActivityResult()로 돌려 보내야 bla를 할 수 있습니다 bla bla .. 어떻게 구할 수 있니? 어떤 도움을 주시면 감사하겠습니다. 나에게 정말로 중요합니다.안드로이드, SD 카드 및 반송 경로에서 픽업 노래의 문제점
코드 :
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add("Pick Song");
return super.onCreateOptionsMenu(menu);
}
protected File getTempFile()
{
dir =new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Music");
return dir;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
//System.gc();
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/mp3");
Uri data = Uri.fromFile(getTempFile());
intent.setData(data);
startActivityForResult(intent, Pick_song);
return true;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case Pick_song : if ((resultCode == RESULT_OK)&&(data != null))
{
final String ringTonePath = data.getData().getEncodedPath();
Button playbutton = (Button)findViewById(R.id.play);
playbutton.setVisibility(0);
playbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
try
{
mMediaPlayer.setDataSource(ringTonePath);
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
mp.release();
mp = null;
}
});
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
});
}
}
}
업데이트 :. 내가 그 노래에 대한 내용을 얻고으로 내가 NPE.How을 가지고 y를 setDataSource (에 점점 널 포인터 Excepton)이 아닌 URI.thats 그렇게 내가 해결하려면?
만약 우리가 오류 U를 알고 싶다면 logcat 세부 사항을 게시해야합니다 :), 더 나은지 확인하십시오 manifest에서 u는 활동 이름을 선언했는지 아닌지 (다른 활동이 있다면) 맞지? – Randroid
setAction에서 오류가 발생했습니다 (Intent.ACTION_GET_CONTENT); 대신 Intent.PICK 대신 사용해야합니다. – Geetanjali