Как понять ошибки сбоев Android и исправить их? - PullRequest
2 голосов
/ 25 июля 2011

Это пример одной из трассировок стека, как мне исправить это приложение? Есть ли другие инструменты на Google Marketplace, которые помогают мне в этом?

java.lang.IllegalStateException: неизвестный URL: контент: // медиа / внешний / аудио / 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.MenuItemImpl.invoke (MenuItemImpl.java:158) в com.android.internal.view.menu.MenuBuilder.performItemAction (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) в android.os.Handler.handleCallback (Handler.java:587) в android.os.Handler.dispatchMessage (Handler.java:92) в android.os.Looper.loop (Looper.java:144) в android.app.ActivityThread.main (ActivityThread.java:4937) в java.lang.reflect.Method.invokeNative (родной метод) в 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 (собственный метод)


EDIT:

Я на самом деле назвал это функцией 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, "Аудио / MPEG"); values.put (MediaStore.Audio.Media.ARTIST, "Неизвестный художник "); values.put (MediaStore.Audio.Media.IS_RINGTONE, ложный); values.put (MediaStore.Audio.Media.IS_NOTIFICATION, правда); values.put (MediaStore.Audio.Media.IS_ALARM, false); values.put (MediaStore.Audio.Media.IS_MUSIC, false);

                  Uri uri =
* * 1 022 MediaStore.Audio.Media.getContentUriForPath (k.getAbsolutePath ());

getContentResolver (). Delete (uri, MediaStore.MediaColumns.TITLE + "= \" " + "MultiboardNotif" + "\" ", null); Uri newUri = getContentResolver (). Insert (uri, значения);

                  RingtoneManager.setActualDefaultRingtoneUri(
                    series9button.this,
                    RingtoneManager.TYPE_NOTIFICATION,
                    newUri);

  }

ПОСТАНОВИЛИ

Ну, теперь я понимаю, как теперь работают ошибки сбоя! и вот как я решил свою проблему:

У меня возникла проблема на некоторых телефонах при установке мелодии звонка в качестве звука из каталога, в котором я храню свои звуки на SD-карте.

Я добавляю файл, чтобы сканер медиаданных не сканировал файлы в моих каталогах и добавил их в базу данных.

Чтобы обойти это, когда нажата кнопка вызова мелодии / уведомления / тревоги, я копирую файл в каталог на SD-карте с именем \<sdard>\ringtones или \<sdard>\notifications или \<sdard>\alarms, и код, который я использовал ранее, работает нормальноиз этого места.

Ответы [ 2 ]

5 голосов
/ 25 июля 2011

«Ошибка сбоя Android», на которую вы ссылаетесь, на самом деле является трассировкой стека JAVA.Поиск в Google наверняка принесет много результатов.Позвольте мне дать вам несколько советов:

  • такая трассировка стека выводится в поток ошибок, когда генерируется исключение, которое не перехватывается.
  • Первая строка содержит классимя исключения (в вашем случае java.lang.IllegalStateException), за которым следует сообщение об исключении («Неизвестный URL: content: // media / external / audio / albumart / -1»).Это говорит вам, ЧТО произошло.
  • Остальная часть трассировки стека содержит информацию о том, ГДЕ это произошло.Поскольку функции вызывают друг друга, вы увидите несколько функций в обратном порядке их вызова, по одной на строку.В вашем примере:
    • исключение произошло в классе android.os.Parcel метод readException() в файле Parcel.java в строке 1255
    • этот метод был вызван android.database.DatabaseUtils метод readExceptionFromParcel()файл DatabaseUtils.java в строке 160
    • ......

Скорее всего, вас заинтересует последний (самый верхний) вызов методаэто приходит из вашего кода, так как в 99% случаев это является причиной ошибки.в вашем случае это com.multi.board.series9button.function2(series9button.java:155) (вы интерпретируете это как function2() из класса com.multi.board.series9button line 155).

Удачи!

1 голос
/ 25 июля 2011

Если вы используете eclipse или Netbeans, вы можете использовать встроенный отладчик.Лично мой метод (так как этот отладчик иногда может быть бесполезен) состоит в том, чтобы поместить "Log.d (" FileName "," Message on location ");"по всему моему коду.Затем следуйте вместе с программой в коде, и когда вы получите эту ошибку, вы будете точно знать, где она находится.А потом приходит удовольствие от ее решения ...

...