【发布时间】:2016-12-08 15:23:40
【问题描述】:
单击片段类(ReminderPage)中的editText时,我希望它打开音频文件,以便我可以选择音乐文件作为铃声。
ringtone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent1 = new Intent();
intent1.setAction(Intent.ACTION_GET_CONTENT);
intent1.setType("audio/*");
startActivityForResult(
Intent.createChooser(intent1, "Choose Sound File"), 6);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data,Context context) {
if (resultCode == getActivity().RESULT_OK && requestCode == 6) {
Uri i = data.getData(); // getData
String s = i.getPath(); // getPath
File k = new File(s); // set File from path
if (s != null) { // file.exists
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "ring");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
.getAbsolutePath());
context.getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\""
+ k.getAbsolutePath() + "\"", null);
Toast.makeText(getActivity(),values+"",Toast.LENGTH_LONG).show();
Uri newUri = context.getContentResolver().insert(uri, values);
try {
RingtoneManager.setActualDefaultRingtoneUri(
getActivity().ReminderPage, RingtoneManager.TYPE_RINGTONE,
newUri);
} catch (Throwable t) {
}
}
}
}
但我收到错误,并且从未使用过 onActivityResult....
错误:(473, 42) 错误: 找不到符号变量 ReminderPage 错误:(443, 5) 错误:方法未覆盖或实现方法 来自超类型
更改为 getActivity().getContentResolver() 和 Reminder.this 后,出现新错误
错误:(444, 20) 错误: onActivityResult(int,int,Intent) in ReminderPage 不能覆盖 onActivityResult(int,int,Intent) 片段试图分配较弱的访问权限;是公开的 错误:(472, 36) 错误:类中的方法 setActualDefaultRingtoneUri RingtoneManager 不能应用于给定类型;必需的: Context,int,Uri found: ReminderPage,int,Uri 原因: 实际参数 ReminderPage 无法通过方法调用转换为 Context 转化
【问题讨论】:
标签: android audio android-edittext