但是当我按下ImageButton时,我希望将声音设为铃声 .
这是我的代码:
public class ListViewAdapter extends BaseAdapter {
private Context context;
private List items;
private LayoutInflater inflater;
String path="sdcard/media/ringtone";
public ListViewAdapter(Context context,
List items ) {
inflater = LayoutInflater.from( context );
this.context = context;
this.items = items;
}
public int getCount() {
return items.size();
}
public Object getItem(int position) {
return items.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
String item = items.get(position);
View v = null;
if( convertView != null )
v = convertView;
else
v = inflater.inflate( R.layout.list_row, parent, false);
TextView itemTV = (TextView)v.findViewById( R.id.itemText);
itemTV.setText( item );
ImageButton button =
(ImageButton)v.findViewById( R.id.button);
button.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText( context,
"ImageButton clicked",
Toast.LENGTH_SHORT).show();
File k = new File(path, "my sound");
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "exampletitle");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
//Insert it into the database
//Insert it into the database
Uri newUri= context.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values);
RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
});
return v;
}
}
这是我没有错误的MainActivity代码:
public class MainActivity extends Activity {
MediaPlayer mp = new MediaPlayer();
Button stop;
ListViewAdapter adapter;
int s1[] =
{
R.raw.el_tri_abuelita_soy_tu_nieto,
R.raw.el_tri_ahi_te_lo_lavas,
R.raw.el_tri_bajate_del_avion,
};
ImageButton imageButonMsj, imageButtonPhone;
int position;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list30 = (ListView) findViewById(R.id.list);
ArrayList items = new ArrayList();
items.add("Abuelita soy tu nieto");
items.add("Ahi te lo lavas");
items.add("Bajate del avion");
adapter = new ListViewAdapter(this, items );
list30.setAdapter(adapter);
list30.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
method(position);
}
});
Log.i("ramiro", "llego al final");
}
public void method(int position){
if((mp.isPlaying()==true) && (this.position == position))
mp.stop();
else{
this.position = position;
try{
mp.reset(); //resets the media player
mp.release(); //release the media player of current audio playing
mp=MediaPlayer.create(this,s1[position]); //create a new media player with the selected id
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
//mp.prepare(); //salta exception
mp.seekTo(0); //seek to starting of song means time=0 ms
mp.start(); //start media player
}
catch (Exception e)
{
Toast.makeText(getApplication(), "error exception", Toast.LENGTH_SHORT).show();
}
}
}
我编辑了,现在应用程序编译,但是当我按下ImageButton时,应用程序发送了一条消息 - >不幸的是,El Tri Sonidos已经停止了 .
FATAL EXCEPTION: main
java.lang.SecurityException: Permission Denial: writing com.android.providers.settings.SettingsProvider uri content://settings/system from pid=690, uid=10052 requires android.permission.WRITE_SETTINGS, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1425)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:420)
at android.content.ContentResolver.insert(ContentResolver.java:864)
at android.provider.Settings$NameValueTable.putString(Settings.java:665)
at android.provider.Settings$System.putString(Settings.java:862)
at android.media.RingtoneManager.setActualDefaultRingtoneUri(RingtoneManager.java:655)
at com.institutovilma.eltri.ListViewAdapterImageButton$1.onClick(ListViewAdapterImageButton.java:80)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我该如何修复此运行时错误?