这是堆栈跟踪之一的示例,如何修复我的应用程序? Google Marketplace 中还有其他工具可以帮助我解决此问题吗?
java.lang.IllegalStateException: Unknown URL: content://media/external/audio/albumart/-1 at android.os.Parcel.readException(Parcel.java:1255) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) at android.content.ContentProviderProxy.insert(ContentProviderNative.java:450) at android.content.ContentResolver.insert(ContentResolver.java:587) at com.multi.board.series9button.function2(series9button.java:155) at com.multi.board.series9button.onContextItemSelected(series9button.java:95) at android.app.Activity.onMenuItemSelected(Activity.java:2206) at com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback.onMenuItemSelected(PhoneWindow.java:2781) at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:137) at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:876) at android.widget.AdapterView.performItemClick(AdapterView.java:284) at android.widget.ListView.performItemClick(ListView.java:3382) at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:144) at android.app.ActivityThread.main(ActivityThread.java:4937) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) at dalvik.system.NativeStart.main(Native Method)
编辑:
我实际上称它为函数 2!这是多么糟糕的编程啊。这是函数。问题是我无法让它在我的手机或我尝试过的任何其他手机上崩溃......
public void function2(int id){ Toast.makeText(this, "Set as notification",
Toast.LENGTH_SHORT).show(); String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
String path = sdcard + "/multi10/" + Global.currentboard +
"/series9";
File k = new File(path, Global.currentsound); ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA,
k.getAbsolutePath()); values.put(MediaStore.MediaColumns.TITLE, "MultiboardNotif"); values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg"); values.put(MediaStore.Audio.Media.ARTIST, "Unknown artist"); values.put(MediaStore.Audio.Media.IS_RINGTONE, false); values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); values.put(MediaStore.Audio.Media.IS_ALARM, false); values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri =
MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
getContentResolver().delete(uri,MediaStore.MediaColumns.TITLE + "=\"" + "MultiboardNotif" +"\"", null); Uri newUri = getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri( series9button.this, RingtoneManager.TYPE_NOTIFICATION, newUri); }
已解决
我现在明白崩溃错误是如何工作的了!这就是我解决问题的方法:
当我将铃声设置为 SD 卡上存储声音的目录中的声音时,我在某些手机上遇到了问题。
我添加一个文件来告诉媒体扫描仪不要扫描我的目录中的文件并将它们添加到数据库中。
因此,为了在按下设置为铃声/通知/闹钟按钮时解决此问题,我将文件复制到 SD 卡上名为 \<sdard>\ringtones
的目录中。或\<sdard>\notifications
或\<sdard>\alarms
我之前使用的代码在该位置运行良好。
最佳答案
您所指的“Android崩溃错误”实际上是JAVA堆栈跟踪。谷歌搜索肯定会带来很多结果。不过,让我给你一些建议:
- 当抛出未捕获的异常时,此类堆栈跟踪将转储到错误流。
- 第一行包含异常的类名(在您的情况下为 java.lang.IllegalStateException ),后跟异常消息(“Unknown URL: content://media/external/音频/albumart/-1")。这告诉你发生了什么。
- 堆栈跟踪的其余部分包含有关其发生位置的信息。由于函数相互调用,因此您将看到几个函数的调用顺序与它们调用的顺序相反,每行一个。在你的例子中:
- 文件
Parcel.java
中第1255 行的
android.os.Parcel
类方法readException()
发生异常 - 该方法由文件
DatabaseUtils.java
中第160 行的
android.database.DatabaseUtils
方法readExceptionFromParcel()
调用 - ......
- 文件
您很可能对来自您的代码的最新(最顶层)方法调用感兴趣,因为 99% 的情况下都是导致错误的原因。在您的情况下,这是 com.multi.board.series9button.function2(series9button.java:155)
(您将其解释为 com 类中的
行function2()
.multi.board.series9button155
)。
祝你好运!
关于android - 我如何理解 Android 崩溃错误并纠正它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6817755/