2011-05-04 41 views
0

所以我試圖使用Android的HTTPS連接,使用客戶端證書進行驗證。我已將此證書導入BKS商店,並插入我的res/raw中。Android - 作爲InputStream的原始資源

一切都好。

但是,當我開始運行時,我得到一個常量NullPointerException。
對於上下文,我有一個Connection類,擴展了Application,並且基本的構造函數應該只是打開一個InputStream作爲一個InputStream並保持就緒。當我來建立連接時,這將被使用。如下(有刪節):

public class RCPHandshake2 extends Application { 

    InputStream in; 

    public RCPHandshake2(){ 
    super.onCreate(); 
    in = getResources().openRawResource(R.raw.test);   
    } 

} 

的集結到這個運行正常,然而,當我們到那裏(在真實版的第36行),堆棧跟蹤是像這樣:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.<company>.t1v2/com.<company>.t1v2.SplashAndText}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
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:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
at com.<company>.<component>.RCPHandshake2.<init>(RCPHandshake2.java:36) 
at com.<company>.t1v2.SplashAndText.onCreate(SplashAndText.java:43) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
... 11 more 

這似乎出乎意料。有沒有人遇到類似的?
永恆的愛和感謝,以換取任何解決方案/提示/提示/指針從一個更有經驗的人,我呢!

PS - 基本上,即使我知道原始資源在那裏,它出現在R.java中,這似乎認爲它無法訪問它?這是這種情況,還是我失去了一些致盲?

回答

3

看來你不能從構造函數訪問資源,因爲對象還沒有被初始化。嘗試稍後再調用它,當你真的需要這第一次。

+0

我試過了,我認爲它的工作,但它沒有。所以我創建了一個RCPHandshake2的新實例,然後調用它的getSocketFactory()方法。我甚至嘗試過這樣做.getResources()....但它沒有幫助。你有沒有更多的想法?提前致謝 :-) – 2011-05-04 16:46:47

0

我有同樣的問題。原來,我用了一個錯誤的(空的)上下文,所以實際上沒有資源通過getResource()來訪問 - > NullPointerException ...