次のコードは、一部のデバイスでクラッシュし続けます (着信音ピッカー ダイアログを即座に閉じます)。ほとんどのデバイスでは、期待どおりに動作しています。クラッシュするデバイスの共通点を見つけることができませんでした。
誰かがこの問題で私を助けてくれたら、本当にうれしいです。ところで:Logcatはまったく何も示していません。エラーなし。
これがコードです
protected void chooseRingtone() {
final Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.choose_ringtone));
if (ringtoneURI != null) {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneURI);
}
else {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
}
startActivityForResult(intent, RINGTONE_RESULT);
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
if (resultCode == RESULT_OK && requestCode == RINGTONE_RESULT) {
ringtoneURI = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (ringtoneURI != null) {
try {
ringtoneString = RingtoneManager.getRingtone(this, ringtoneURI).getTitle(this);
} catch (final Exception e) {
ringtoneString = "unknown";
}
ringtone.setText(ringtoneString);
}
}
}
マニフェストは次のようになります。
<uses-sdk
android:maxSdkVersion="17"
android:minSdkVersion="8"
android:targetSdkVersion="8"
/>