2013-02-23 115 views
1

我試圖寫dashclock擴展名,所以我開始使用example-extension 但我無法正常工作。我可以在擴展列表的dashclock設置中看到這個示例擴展,但它不在實際的dashclock小部件中。它崩潰的backgound定期與該堆棧跟蹤:Dashclock小部件示例擴展名無法實例化服務

02-22 17:04:31.118: E/AndroidRuntime(25888): FATAL EXCEPTION: main 
02-22 17:04:31.118: E/AndroidRuntime(25888): java.lang.RuntimeException: Unable to instantiate service com.example.dashclock.exampleextension.ExampleExtension: java.lang.ClassNotFoundException: Didn't find class "com.example.dashclock.exampleextension.ExampleExtension" on path: /data/app/com.example.dashclock.exampleextension-1.apk 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2513) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.app.ActivityThread.access$1600(ActivityThread.java:141) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.os.Looper.loop(Looper.java:137) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.app.ActivityThread.main(ActivityThread.java:5041) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at java.lang.reflect.Method.invokeNative(Native Method) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at java.lang.reflect.Method.invoke(Method.java:511) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at dalvik.system.NativeStart.main(Native Method) 
02-22 17:04:31.118: E/AndroidRuntime(25888): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.dashclock.exampleextension.ExampleExtension" on path: /data/app/com.example.dashclock.exampleextension-1.apk 
02-22 17:04:31.118: E/AndroidRuntime(25888): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
02-22 17:04:31.118: E/AndroidRuntime(25888): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2510) 
02-22 17:04:31.118: E/AndroidRuntime(25888): ... 10 more 

感謝您的幫助

回答

2

錯誤:

java.lang.ClassNotFoundException: Didn't find class "com.example.dashclock.exampleextension.ExampleExtension" on path: /data/app/com.example.dashclock.exampleextension-1.apk

這意味着它無法找到ExampleExtension.java應設在com.example.dashclock.exampleextension


首先,不要在示例文件導入到Eclipse中,開始了全新的Android應用程序

取消的創建活動按鈕,當它要求

創建後,右鍵單擊src文件夾並添加一個包。 然後右鍵單擊包並創建一個新類。 這個新班級將成爲您的延伸。從Dashclock網站 獲得兩個jar文件here

將它們拖放到您的libs文件夾

添加到您的清單

<application android:label="@string/app_name" 
    android:icon="@drawable/ic_extension_yourIcon" 
    android:theme="@android:style/Theme.Holo"> 

    <service android:name=".YourExtension" 
     android:icon="@drawable/ic_extension_your_icon" 
     android:label="@string/your_extension_title" 
     android:permission="com.google.android.apps.dashclock.permission.READ_EXTENSION_DATA"> 
     <intent-filter> 
      <action android:name="com.google.android.apps.dashclock.Extension" /> 
     </intent-filter> 
     <meta-data android:name="protocolVersion" android:value="1" /> 
     <meta-data android:name="description" 
      android:value="@string/your_extension_description" /> 
    </service> 

</application> 

保存清單,找到紅色線表示的錯誤,並添加適當的串到你的strings.xml

這裏是一個空的擴展類

public class YourExtension extends DashClockExtension { 

    @Override 
    protected void onUpdateData(int reason) { 

    publishUpdate(new ExtensionData() 
    .visible(true) 
    .icon(R.drawable.ic_extension_yourIcon) 
    .status("This is the text when minimized") 
    .expandedTitle("This is the white Title text when expanded") 
    .expandedBody("This is the grey footer text when expanded") 
    .clickIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")))); 

    } 
    } 
+0

好吧,我不知道爲什麼,但終於有效。非常感謝。 – Semanticer 2013-02-26 08:04:36

+0

在遵循@ jb15613之後,我得到了我的擴展以編譯並顯示在擴展列表中。我得到 '03-07 14:57:00.566:E/AndroidRuntime(14508):致命例外:主' '03-07 14:57:00.566:E/AndroidRuntime(14508):java.lang。 NoClassDefFoundError:com.google.android.apps.dashclock.api.ExtensionData' 我已經導入api.jar,並且在Eclipse中沒有編譯錯誤。類(ExtensionData)*是*,但無法看到。 – alexismorin 2013-03-07 14:01:18

+0

網站上存在不同的Jar文件,您應該同時導入它們。 Class ExtensionData是什麼?在我的擴展中,我只有一個類,它在清單 – jb15613 2013-03-07 23:58:10

0

如果在完成jb15613解釋得非常好之後(我在評論中看到人們 - 像我這樣的人 - 它不工作),在IntelliJ上,在項目結構的模塊依賴性選項卡中設置,它將JAR提供爲「編譯」。

相關問題