当点击片段类(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发现:ReminderPage,int,Uri reason:实际参数 无法通过方法调用将ReminderPage转换为Context 转化
答案 0 :(得分:2)
对于第一个错误,请在调用getActivity().ReminderPage
时尝试将getActivity()
替换为setActualDefaultRingtoneUri
。
关于第二个错误:Fragment.onActivityResult方法中没有Context context
参数,可见性应为public
。在覆盖它时,您必须尊重该方法的签名。
替换
protected void onActivityResult(int requestCode, int resultCode, Intent data,Context context) {
通过
public void onActivityResult(int requestCode, int resultCode, Intent data) {
并替换
context.getContentResolver()
通过
getActivity().getContentResolver()
答案 1 :(得分:1)
这一行可能是问题所在:
getActivity().ReminderPage
你可以使用
getActivity()