Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何理解Android崩溃错误并纠正它们_Android_Debugging_Stack Trace_Google Play - Fatal编程技术网

我如何理解Android崩溃错误并纠正它们

我如何理解Android崩溃错误并纠正它们,android,debugging,stack-trace,google-play,Android,Debugging,Stack Trace,Google Play,这是其中一个堆栈跟踪的示例,如何从中修复我的应用程序?google marketplace中是否有其他工具可以帮助我解决这个问题 java.lang.IllegalStateException:未知URL: content://media/external/audio/albumart/-1 在 android.os.Parcel.readException(Parcel.java:1255)位于 android.database.DatabaseUtils.readExceptionFromP

这是其中一个堆栈跟踪的示例,如何从中修复我的应用程序?google marketplace中是否有其他工具可以帮助我解决这个问题

java.lang.IllegalStateException:未知URL: content://media/external/audio/albumart/-1 在 android.os.Parcel.readException(Parcel.java:1255)位于 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160) 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 在 android.content.ContentProviderProxy.insert(ContentProviderNative.java:450) 在android.content.ContentResolver.insert(ContentResolver.java:587)中 com.multi.board.series9button.function2(series9button.java:155)位于 com.multi.board.series9button.onContextItemSelected(series9button.java:95) 在android.app.Activity.onMenuItemSelected(Activity.java:2206)的 com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback.onMenuItemSelected(PhoneWindow.java:2781) 在 com.android.internal.view.menu.menuitemmpl.invoke(menuitemmpl.java:158) 在 com.android.internal.view.menu.MenuBuilder.performitemation(MenuBuilder.java:855) 在 com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:137) 在 com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:876) 在android.widget.AdapterView.performItemClick(AdapterView.java:284)上 在android.widget.ListView.performItemClick(ListView.java:3382)上 android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)位于 handleCallback(Handler.java:587)位于 dispatchMessage(Handler.java:92)位于 Looper.loop(Looper.java:144)位于 main(ActivityThread.java:4937)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 java.lang.reflect.Method.invoke(Method.java:521)位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) dalvik.system.NativeStart.main(本机方法)


编辑:

我把它叫做函数2!这是多么糟糕的编程啊。下面是函数。问题是我无法让这个在我的手机上崩溃,或者我尝试过的其他任何东西

吐司。长度(短)。show(); 字符串SD卡= Environment.getExternalStorageDirectory().getAbsolutePath()

“/系列9”

k、 getAbsolutePath()); value.put(MediaStore.MediaColumns.TITLE, “多董事会通知”); value.put(MediaStore.MediaColumns.MIME_类型, “音频/mpeg”); values.put(MediaStore.Audio.Media.ARTIST,“未知 艺术家); value.put(MediaStore.Audio.Media.IS_铃声, 假); value.put(MediaStore.Audio.Media.IS_通知, 正确的); value.put(MediaStore.Audio.Media.IS_报警,false); value.put(MediaStore.Audio.Media.IS_MUSIC,false)

MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath())

getContentResolver().delete(uri,MediaStore.MediaColumns.TITLE+“=\”) +“MultiboardNotif”+“\”,null); Uri newUri=getContentResolver().insert(Uri,值)


已解决

我现在明白了崩溃错误是如何工作的了!我就是这样解决我的问题的:

当我将铃声设置为SD卡上存储声音的目录中的声音时,有些手机出现问题

我添加了一个文件,告诉媒体扫描程序不要扫描我目录中的文件,并将它们添加到数据库中


因此,当按下set as ringtone/notification/alarm(设置为铃声/通知/报警)按钮时,为了解决这个问题,我将文件复制到SD卡上名为
\\ringtones
\\notifications
的目录中,并且我以前使用的代码可以在该位置正常工作。

如果您使用的是eclipse或Netbeans,您可以使用内置调试器。就我个人而言,我的方法(因为调试器有时没有帮助)是在我的代码中放置“Log.d(“FileName”,“messageabout location”);”。然后按照代码中的程序进行操作,当您遇到错误时,您将确切地知道它在哪里。然后是解决它的乐趣…

您所指的“Android崩溃错误”实际上是一个JAVA堆栈跟踪。谷歌搜索这一点肯定会带来很多结果。不过,让我给你一些建议:

  • 当抛出未捕获的异常时,此类堆栈跟踪将转储到错误流
  • 第一行包含异常的类名(在您的示例中为
    java.lang.IllegalStateException
    ),后跟异常消息(“未知URL:content://media/external/audio/albumart/-1"). 这告诉你发生了什么
  • 堆栈跟踪的其余部分包含发生位置的信息。由于函数相互调用,您将看到几个函数的调用顺序与调用顺序相反,每行一个。在您的示例中:
    • 异常发生在类
      android.os.Parcel
      方法
      readException()
      文件
      Parcel.java
      第1255行
    • 该方法由文件
      DatabaseUtils.java
      160行
您很可能对来自代码的最新(最顶层)方法调用感兴趣,因为在99%的情况下是导致错误的原因。在您的例子中,这是
com.multi.board.series9button.function2(series9button.java:155)
(您从类
com.multi.board.series9button
中将其解释为
function2()


祝你好运

请添加一些代码,谢谢
public void function2(int id){
      Toast.makeText(this, "Set as notification",
            String path = sdcard + "/multi10/" + Global.currentboard +
                  File k = new File(path, Global.currentsound);

                  ContentValues values = new ContentValues();
                  values.put(MediaStore.MediaColumns.DATA,
                  Uri uri =
                  RingtoneManager.setActualDefaultRingtoneUri(
                    series9button.this,
                    RingtoneManager.TYPE_NOTIFICATION,
                    newUri);

  }