Мой код отказался вернуть правильный код запроса, поэтому я немного импровизировал. Он всегда возвращался -1.Force Close on RingtonePicker
if(v.getId() == R.id.imageButton9)
{
request = 888;
Intent wpIntent = new Intent();
wpIntent.setType("image/*");
wpIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"), SELECT_PICTURE);
}
else if(v.getId() == R.id.imageButton10)
{
String uri = null;
request = 999;
rtIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
rtIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
rtIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
if(uri != null)
{
rtIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(uri));
}
else
{
rtIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri)null);
}
this.startActivityForResult(rtIntent, SELECT_TONE);
}
Я объявил две переменные в начале моего кода:
protected static final int SELECT_PICTURE = 888;
protected static final int SELECT_TONE = 999;
Вот onActivityResult:
public void onActivityResult(int resultCode, int requestCode, Intent data)
{
Toast.makeText(this, "onActivityResult: "+requestCode, Toast.LENGTH_SHORT).show();
if(request == 888)
{
Toast.makeText(this, "Picture Selection", Toast.LENGTH_SHORT).show();
Uri selectedImage = Uri.parse(data.getDataString());
wpPath = getPath(selectedImage);
Toast.makeText(this, "WP Path: "+wpPath, Toast.LENGTH_SHORT).show();
request = 0;
}
else if(request == 999)
{
Toast.makeText(this, "Tone Selection", Toast.LENGTH_SHORT).show();
Log.i("RT Picked is: ", rtIntent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI).toString());
Uri uri = rtIntent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null)
{
rtPath = uri.toString();
Toast.makeText(this, "Ringtone Path: "+rtPath, Toast.LENGTH_SHORT).show();
request = 0;
}
}
}
Это всегда заставляющие закрывается. Он дает следующую ошибку:
06-01 12:40:35.388: E/AndroidRuntime(7437): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=999, result=-1, data=Intent { (has extras) }} to activity {com.asim.autobot/com.asim.autobot.profile}: java.lang.NullPointerException
Я застрял. Не удается решить эту проблему.
Прежде всего, почему requestCode всегда возвращает -1? Во-вторых, почему приложение принудительно закрывается на rtIntent.getParcelableExtra (RingtoneManager.EXTRA_RINGTONE_PICKED_URI) ;?
EDIT: Полный Logcat http://i47.tinypic.com/1zm2gww.jpg
Линия она указывает на это Log.i ("RT поднято является:", rtIntent.getParcelableExtra (RingtoneManager.EXTRA_RINGTONE_PICKED_URI) .ToString());
Используйте переключатель, вместо проверки кнопки с if (if (v.getId() == R.id.imageButton9)) – Aerrow
, пожалуйста, напишите полный логарифм. – techiServices
Изображение Logcat добавлено. – Asim