【问题标题】:Force close in adding a new bookmark in the browser在浏览器中添加新书签时强制关闭
【发布时间】:2012-02-01 19:55:16
【问题描述】:

我正在尝试在我的网络浏览器中添加一个新书签,书签添加成功,但是,添加书签后程序抛出异常,我解释一下:

调用 Browser.saveBookmark 时,我可以填写 url 和 title 值,然后选择“save”。该项目已成功添加到列表中。然后,消息显示:“对不起!应用程序浏览器(进程com.android.browser)已意外停止。请重试。”

这是我的源代码:

@Override  
public boolean onOptionsItemSelected(MenuItem item) {  

if (item.getItemId() == MENU_ADD) {  
    Browser.saveBookmark(this, "New Bookmark", "http://");  
    return true;
} else
    return false;
} 

Logcat 中的堆栈跟踪如下:

  01-03 14:47:25.862: ERROR/AndroidRuntime(1720): FATAL EXCEPTION: Thread-11
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at android.os.Handler.<init>(Handler.java:121)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at android.webkit.WebIconDatabase$EventHandler.<init>(WebIconDatabase.java:46)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at android.webkit.WebIconDatabase$EventHandler.<init>(WebIconDatabase.java:46)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at android.webkit.WebIconDatabase.<init>(WebIconDatabase.java:43)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at android.webkit.WebIconDatabase.getInstance(WebIconDatabase.java:293)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at com.android.browser.Bookmarks.addBookmark(Bookmarks.java:136)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at com.android.browser.AddBookmarkPage$SaveBookmarkRunnable.run(AddBookmarkPage.java:136)
  01-03 14:47:25.862: ERROR/AndroidRuntime(1720):     at java.lang.Thread.run(Thread.java:1096)

我已经尝试过这种方式来添加书签(而不是 Browser.saveBookmark):

  Intent i = new Intent(Intent.ACTION_INSERT, android.provider.Browser.BOOKMARKS_URI);
  i.putExtra("title", title);
  i.putExtra("url", url);
  this.startActivity(i);

但是,这给了我同样的错误!

那么,这个错误的任何解决方法或添加书签的任何其他解决方案? 提前致谢

【问题讨论】:

标签: android


【解决方案1】:

编辑:

改变这个:

if (item.getItemId() == MENU_ADD) {  
   Browser.saveBookmark(this, "New Bookmark", "http://");  
   bookmarkAdapter.notifyDataSetChanged();
   return true;
} else
   return false;
} 

有了这个

if (item.getItemId() == MENU_ADD) {  
   Intent i = new Intent(Intent.ACTION_INSERT, android.provider.Browser.BOOKMARKS_URI);
   i.putExtra("title", title);
   i.putExtra("url", url);
   this.startActivity(i);
   return true;
} else
   return false;
} 

试试看。

【讨论】:

  • 哦,你没有提到那个细节。这不是答案。
  • 我错了Ragetzaz,所以你给我的代码和Browser.saveBookmark(..)方法做的一样,但是当我尝试它时,它给了我同样的错误:(
猜你喜欢
  • 2011-02-27
  • 2011-05-22
  • 2013-01-04
  • 1970-01-01
  • 2015-08-26
  • 2012-11-04
  • 1970-01-01
  • 2015-12-09
  • 2015-01-05
相关资源
最近更新 更多