2011-12-27 103 views
0

在我的应用程序,我想获得浏览器历史记录,我尝试用下面的代码,但它抛出一个异常,下面是代码:致命异常

private static final Uri BOOKMARKS_URI = null; 
private static final String[] HISTORY_PROJECTION = null; 
private static final int HISTORY_PROJECTION_TITLE_INDEX = 0; 
private static final int HISTORY_PROJECTION_URL_INDEX = 0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.browser); 

    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setBuiltInZoomControls(true); 
    mWebView.loadUrl(turl); 

    mWebView.setWebViewClient(new BrowserClient() { 

     public void onPageFinished(WebView view, String url) { 
      getBrowserHist(); 
     } 
    }); 
    } 
    public void getBrowserHist() { 
     Cursor mCur = managedQuery(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, null); 
     mCur.moveToFirst(); 
     if (mCur.moveToFirst() && mCur.getCount() > 0) { 
      while (mCur.isAfterLast() == false) { 
       Log.v("titleIdx", mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)); 
       Log.v("urlIdx", mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX)); 
       mCur.moveToNext(); 
      } 
     } 
    } 

但该计划抛出此例外:

12-27 11:50:55.122: ERROR/AndroidRuntime(295): FATAL EXCEPTION: main 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295): java.lang.NullPointerException 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at android.content.ContentResolver.acquireProvider(ContentResolver.java:727) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at         android.content.ContentResolver.query(ContentResolver.java:239) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at android.app.Activity.managedQuery(Activity.java:1520) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at com.mobila.browser.Browser.getBrowserHist(Browser.java:108) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at com.mobila.browser.Browser$1.onPageFinished(Browser.java:70) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:274) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at android.os.Looper.loop(Looper.java:123) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at java.lang.reflect.Method.invokeNative(Native Method) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at java.lang.reflect.Method.invoke(Method.java:521) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    12-27 11:50:55.122: ERROR/AndroidRuntime(295):  at dalvik.system.NativeStart.main(Native Method) 

因此,如果有人已经用这个代码读取浏览器的历史,告诉我PLZ,我错了,或者任何帮助..

感谢

+0

好吧,我知道了,问题是,它认为,“浏览器”是我自己的类,所以当我把“android.provider.Browser “而不是”getBrowserHist()“中的”浏览器“功能,它工作! – 2011-12-27 20:10:46

回答

1

你需要一个适当的权限读取浏览器的历史:

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /> 
+0

感谢您的回复,但我已经设置了所需的权限 – 2011-12-27 19:20:52