2013-08-17 86 views
0

我需要一个类来获取设备上的艺术家,专辑和曲目,然后我将使用JNI进行调用。getContentResolver in Separate Class

目前,在它的准系统中,以下原因导致崩溃。

public class AndroidMediaLibray extends Activity { 
    public void getArtists() { 
     getContentResolver(); 
    } 
} 

我该如何解决这个问题?

+0

你应该张贴的logcat的。或者至少告诉我们你得到了什么异常。 – MalaKa

+0

08-17 14:44:58.754 11871-11871 /? E/AndroidRuntime:FATAL EXCEPTION:main java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.myapplication/com.example.myapplication.MainActivity}:java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2308) 不知道这是否有帮助。根本不用于Java。 – Jacob

+0

这看起来像你正试图从'MainActivity'的'onCreate'调用'getArtist()'。我对吗? – MalaKa

回答

0

您遇到的问题是您需要致电getContentResolver(),电话号码是Context。如果您在Activity中调用它,则会自动在ActivityContext上调用它。但你(可能)从来没有真正开始AndroidMediaLibrary。请参阅documentation of activities。如果你想在额外的类中调用数据库,你可以看看下面的代码。我创建了一个类static方法。我只需要将我给出的Activity的上下文传递给该类。你的情况是类可能是这样的:

public class AndroidMediaLibrary { 

    public static List<String> getArtists(Context context){ 

     ArrayList<String> retVal = new ArrayList<String>(); 

     ContentResolver resolver = context.getContentResolver();   

     // some more stuff here.. 

     return retVal; 
    } 
} 

你可以调用该函数从您的MainActivity有:

List<String> myValues = DBUtils.someFunction(MainActivity.this); 
+0

谢谢。那就是诀窍。我没有使用静态实现,但不知道这是否重要。非常感谢您的帮助! – Jacob

+0

它也没有静态实现。问题在于,您尝试访问不可用的“AndroidMediaLibrary”活动的“Context”。我认为通过阅读文档可以获得更多的基本理解。 – MalaKa

+0

它可能有帮助。我打算使用Qt,尽可能使用Java。我只打算使用它,如果我需要实现特定于平台的功能。 – Jacob