안녕하세요 저는 안드로이드 애플리케이션의 내 res/raw 폴더에있는 파일을 전화의 sdcard에 복사하여 벨소리로 설정할 수 있도록하려고합니다. 여기에 내가 내 응용 프로그램에 지금까지 무엇을 가지고 : 그것은 setRing 방법의 두 번째 시도 캐치를 명중하면안드로이드의 res 파일에서 sdcard로 파일
package com.wochstudios.ringtonetest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.*;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.res.*;
import android.app.Activity;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class setRingtone extends Activity {
Button setBtn;
TextView result;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setBtn = (Button) findViewById(R.id.button1);
result = (TextView) findViewById(R.id.textView1);
setBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Attempt to make file out on raw element
setRing();
}
});
}
public void setRing(){
File newSoundFile = new File("/sdcard/media/ringtone", "fortkickass.mp3");
Uri mUri = Uri.parse("android.resource://com.wochstudios.ringtonetest/R.raw.fortkickass");
ContentResolver mCr = getContentResolver();
AssetFileDescriptor soundFile;
try {
soundFile= mCr.openAssetFileDescriptor(mUri, "r");
} catch (FileNotFoundException e) {
soundFile=null;
}
try {
byte[] readData = new byte[1024];
FileInputStream fis = soundFile.createInputStream();
FileOutputStream fos = new FileOutputStream(newSoundFile);
int i = fis.read(readData);
while (i != -1) {
fos.write(readData, 0, i);
i = fis.read(readData);
}
fos.close();
} catch (IOException io) {
}
}
}
이 충돌, '내가 이전에 게시 된 질문에서이 코드를 가지고하지만 난 할 수 t는 링크가 더 이상 도움이 좋을 것 찾을
편집
내가 주위에 속지 그래서 이제 충돌이 발생 내가 null의 이유를 알아 내야 있도록 Assetfiledescriptor 사운드 파일이 null 인 것을 발견.
은 내가 IOException이 @ALeadam '\t 시도 { \t \t의 InputStream 인 = this.getResources() openRawResource (R.raw.fortkickass)를 얻을; \t \t byte [] buffer = 새 바이트 [ins.available()]; \t \t ins.read (버퍼); \t \t ins.close(); \t \t 문자열 파일 이름 = Environment.getExternalStorageDirectory(). toString() + File.separator + "fortkickass.mp3"; \t \t result.setText (filename); \t \t FileOutputStream fos = 새 FileOutputStream (파일 이름); \t \t fos.write (버퍼); \t \t fos.close(); \t \t \t} 캐치 (IOException이 IO) { \t \t result.setText ("아니"); \t} ' – DMcP89
@BeardFace 어디에서 예외가 나옵니까? – Aleadam
메신저 내가 FileOutputStream을 가지고 있다고 생각하는지 모르겠다. 내가 더 이상 @aleaadam – DMcP89