5

在学习了来自 android 的 google drive quickstart 之后。我下载了他们的例子并得到了这个错误:

01-13 03:38:39.039: E/AndroidRuntime(29967): java.lang.RuntimeException: Unable to get provider com.example.android.notepad.NotePadProvider: java.lang.ClassNotFoundException: com.example.android.notepad.NotePadProvider in loader dalvik.system.PathClassLoader[/data/app/com.example.android.notepad-1.apk]
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread.installProvider(ActivityThread.java:3561)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread.installContentProviders(ActivityThread.java:3313)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3269)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread.access$2200(ActivityThread.java:117)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:973)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.os.Looper.loop(Looper.java:130)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread.main(ActivityThread.java:3687)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at java.lang.reflect.Method.invokeNative(Native Method)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at java.lang.reflect.Method.invoke(Method.java:507)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at dalvik.system.NativeStart.main(Native Method)
01-13 03:38:39.039: E/AndroidRuntime(29967): Caused by: java.lang.ClassNotFoundException: com.example.android.notepad.NotePadProvider in loader dalvik.system.PathClassLoader[/data/app/com.example.android.notepad-1.apk]
01-13 03:38:39.039: E/AndroidRuntime(29967):    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-13 03:38:39.039: E/AndroidRuntime(29967):    at android.app.ActivityThread.installProvider(ActivityThread.java:3546)
01-13 03:38:39.039: E/AndroidRuntime(29967):    ... 12 more

我按照这里的说明进行操作。我在这里想念什么?

4

2 回答 2

1

您的 Android 版本很可能是旧版本,因为此ContentProvider.PipeDataWriter已添加到 API 11 更高版本(也称为 Honeycomb 及更高版本)中。

注意示例源中的关键行

public class NotePadProvider extends ContentProvider 
                            implements 
                            PipeDataWriter<Cursor> {
    // SNIP 
}

查看示例的原始来源AndroidManifest.xml表明所需的 SDK 的最低版本是 16(即 Android Ice Cream Sandwich 或更高版本)

<uses-sdk android:minSdkVersion="16" />

在较旧版本的 Android 上运行它,即使最低版本已更改以反映您当前的 Android 版本,例如用于 Gingerbread 的 SDK 9、用于 Froyo 的 8 或用于 Eclair 的 7,它也会严重失败,ClassNotFoundException因为由于在早期版本的 Android 中不存在。ContentProviderPipeDataWriter

于 2013-04-02T20:49:13.790 回答
0

尝试以下操作:

  1. 从 SDK 管理器的“附加”下下载 google_play_services
  2. 将 /extras/google/google_play_services/libproject 导入您的工作区(它作为库导入)
  3. 从 NotesList 中删除 google_play_services.jar(谷歌快速入门)
  4. 转到项目属性 > Android > 添加库 > 添加 google_play_services 库。
  5. 清洁并运行

我想 jar 一定有某种问题,我刚刚完成了(当我尝试上传图片快速入门时遇到了一些类似的错误,这是解决它的方法),它就像一个魅力。希望能帮助到你 :)

于 2013-01-22T11:10:22.260 回答