【发布时间】:2012-03-05 09:33:42
【问题描述】:
【问题讨论】:
标签: java android notifications ringtone
【问题讨论】:
标签: java android notifications ringtone
问题来了
String path=Environment.getExternalStorageDirectory().getPath()+"/sdcard/media/ringtone/";
Environment.getExternalStorageDirectory() 无论如何都会返回 /SDCard 路径,使用其他文件夹名称来存储铃声。喜欢 /yourPackage/media 而不是 /sdcard/media
因为它会被解释为/SDCard/yourPackage/media/
希望对你有帮助
【讨论】:
Environment.getExternalStorageDirectory() 无论如何都会返回 /SDCard 路径,因此请跳过该部分
String path=Environment.getExternalStorageDirectory().getPath()+"/yourPackage/com.ring/media";
好的,这里是我目前在我的应用程序中用于将数据存储到我的 SDCard 的示例代码,看看并尝试使用它。
File newSoundFile;
ContentResolver mCr;
Log.e("check this tag","path for SDCard:"+Environment.getExternalStorageDirectory().getAbsolutePath());
//storing at: /mnt/sdcard/media
File directoryStructure=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Halloween");
//if directory doesn't exist create a directory if that fails too return false
if(!(directoryStructure.exists())){
if(!(directoryStructure.mkdirs())){
return false;
}
}
/*for(int allRing=0;allRing<ringId.length;allRing++)*/{
newSoundFile = new File(directoryStructure, "/"+HalloweenWallpaper.longPressSelected+".mp3");
Uri mUri = Uri.parse("android.resource://"+getApplication().getPackageName()+"/"+ringId[HalloweenWallpaper.longPressSelected]);
mCr = HalloweenWallpaper.this.getContentResolver();
AssetFileDescriptor soundFile;
try {
soundFile= mCr.openAssetFileDescriptor(mUri, "r");
} catch (FileNotFoundException e) {
soundFile=null;
Log.e("first check", "here --"+e.getMessage());
return false;
}
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) {
Log.e("Second Check", "--"+io.getMessage());
return false;
}
}
//STORES SUCCESFULLY
【讨论】: