Я не могу использовать google api java клиент YouTubeSample в приложении для Android - PullRequest
0 голосов
/ 22 ноября 2010

Я просто хочу получить мое видео playUrl в Android .... Я проверил соответствующие вопросы об использовании YouTubeSample в Android, их ответ да Но когда я запускаю свой код в эмуляторе или на устройстве Android, он не работает мой код:

    import java.io.IOException;
    import com.google.api.client.googleapis.GoogleHeaders;
    import com.google.api.client.googleapis.GoogleTransport;
    import com.google.api.client.googleapis.json.*;
    import com.google.api.client.http.*;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    public class main extends Activity {
     HttpTransport transport;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            Debug.enableLogging();
            try {
              try {
                HttpTransport transport = setUpTransport();
                showVideos(transport);
              } catch (HttpResponseException e) {

                throw e;
              }
            } catch (Throwable t) {
              t.printStackTrace();

            }
        }
        private static HttpTransport setUpTransport() {
            HttpTransport transport = GoogleTransport.create();
            GoogleHeaders headers = (GoogleHeaders) transport.defaultHeaders;
            headers.setApplicationName("Google-YouTubeSample/1.0");
            headers.gdataVersion = "2";
            transport.addParser(new JsonCParser());
            return transport;
          }

          private static VideoFeed showVideos(HttpTransport transport)
              throws IOException {
            //View.header("Get Videos");
            // build URL for the video feed for "search stories"
            YouTubeUrl url = YouTubeUrl.forVideosFeed();
            url.author = "cecol3500123";
            // execute GData request for the feed
            VideoFeed feed = VideoFeed.executeGet(transport, url);
            //View.display(feed);
            return feed;
          }
    }

Я скомпилировал это нормально, но на устройстве просто получил Главное приложение неожиданно остановилось

Я обнаружил, что всегда останавливался на коде: HttpTransport transport = GoogleTransport.create();

AndroidManifest установил разрешение: <uses-permission android:name="android.permission.INTERNET"></uses-permission>

А у моего проекта клиентская библиотека Java API google . Что я установил, это нормально? Я перепробовал все возможное (я изменял код снова и снова). Я не знаю, как это сделать. Пожалуйста, помогите мне, я просто хочу получить мое видео playUrl в Android .... (Или кто-то может дать мне правильный код?). извините за мой плохой английский

renew with debug trace
this is my program Debug trace                             
11-23 09:45:10.466: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f0700e5                                 
11-23 09:45:10.486: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f020031        
11-23 09:45:10.496: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f020030        
11-23 09:45:10.506: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f050000       
11-23 09:45:10.716: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f060000            
11-23 09:45:10.856: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f060001                       
11-23 09:45:11.866: DEBUG/ddm-heap(180): Got feature list request    
11-23 09:45:12.166: DEBUG/ddm-heap(185): Got feature list request                
11-23 09:45:12.526: DEBUG/ddm-heap(165): Got feature list request               
11-23 09:45:12.716: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f0700e5                             
11-23 09:45:12.756: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f020031                                
11-23 09:45:12.767: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f020030                           
11-23 09:45:12.776: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f050000                       
11-23 09:45:12.796: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f060000                        
11-23 09:45:12.826: WARN/ResourceType(62): Resources don't contain package for resource number 0x7f060001     
11-23 09:45:13.286: DEBUG/ddm-heap(143): Got feature list request    
11-23 09:45:13.646: WARN/BackupManagerService(62): dataChanged but no participant pkg='com.android.providers.settings' uid=10017      
11-23 09:45:13.946: WARN/BackupManagerService(62): dataChanged but no participant pkg='com.android.providers.settings' uid=10017    
11-23 09:45:14.426: DEBUG/dalvikvm(62): GC freed 8344 objects / 558776 bytes in 461ms    
11-23 09:45:14.826: INFO/ActivityManager(62): Start proc com.android.email for broadcast     com.android.email/com.android.exchange.BootReceiver: pid=205 uid=10023 gids={3003, 1015}
11-23 09:45:14.836: INFO/ActivityManager(62): Starting activity: Intent {        act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.testcom/.main }        
11-23 09:45:15.066: DEBUG/AndroidRuntime(185): Shutting down VM          
11-23 09:45:15.076: DEBUG/dalvikvm(185): DestroyJavaVM waiting for non-daemon threads to exit           
11-23 09:45:15.106: DEBUG/dalvikvm(185): DestroyJavaVM shutting VM down    
11-23 09:45:15.106: DEBUG/dalvikvm(185): HeapWorker thread shutting down    
11-23 09:45:15.116: DEBUG/dalvikvm(185): HeapWorker thread has shut down     
11-23 09:45:15.127: DEBUG/jdwp(185): JDWP shutting down net...    
11-23 09:45:15.127: INFO/dalvikvm(185): Debugger has detached; object registry had 1 entries               
11-23 09:45:15.147: DEBUG/dalvikvm(185): VM cleaning up            
11-23 09:45:15.226: ERROR/AndroidRuntime(185): ERROR: thread attach failed         
11-23 09:45:15.496: DEBUG/dalvikvm(185): LinearAlloc 0x0 used 639500 of 5242880 (12%)          
11-23 09:45:15.566: WARN/ActivityManager(62): Activity pause timeout for     HistoryRecord{43cec138 com.android.launcher/.Launcher}     
11-23 09:45:15.676: INFO/ActivityManager(62): Start proc com.testcom for activity     com.testcom/.main: pid=210 uid=10027 gids={3003, 1015}   
11-23 09:45:16.266: DEBUG/ddm-heap(205): Got feature list request   
11-23 09:45:16.786: DEBUG/ddm-heap(210): Got feature list request   
11-23 09:45:16.976: DEBUG/dalvikvm(30): GC freed 284 objects / 10848 bytes in 1262ms   
11-23 09:45:17.517: DEBUG/dalvikvm(30): GC freed 50 objects / 2224 bytes in 410ms   
11-23 09:45:17.647: INFO/dalvikvm(210): Could not find method    com.google.api.client.googleapis.GoogleTransport.create, referenced from method com.testcom.main.setUpTransport     
11-23 09:45:17.657: WARN/dalvikvm(210): VFY: unable to resolve static method 4:     Lcom/google/api/client/googleapis/GoogleTransport;.create ()Lcom/google/api/client/http/HttpTransport;
11-23 09:45:17.657: DEBUG/dalvikvm(210): VFY: replacing opcode 0x71 at 0x0009    
11-23 09:45:17.677: DEBUG/dalvikvm(210): Making a copy of Lcom/testcom/main;.setUpTransport code (128 bytes)    
11-23 09:45:17.687: WARN/dalvikvm(210): VFY: unable to find class referenced in signature (Lcom/google/api/client/http/HttpTransport;)
11-23 09:45:17.697: WARN/dalvikvm(210): Unable to resolve superclass of Lcom/testcom/YouTubeUrl; (6)
11-23 09:45:17.777: WARN/dalvikvm(210): Link of class 'Lcom/testcom/YouTubeUrl;' failed   
11-23 09:45:17.777: INFO/dalvikvm(210): Could not find method     com.testcom.YouTubeUrl.forVideosFeed, referenced from method com.testcom.main.showVideos
11-23 09:45:17.787: WARN/dalvikvm(210): VFY: unable to resolve static method 40:     Lcom/testcom/YouTubeUrl;.forVideosFeed ()Lcom/testcom/YouTubeUrl;
11-23 09:45:17.787: DEBUG/dalvikvm(210): VFY: replacing opcode 0x71 at 0x0007    
11-23 09:45:17.826: DEBUG/dalvikvm(210): Making a copy of Lcom/testcom/main;.showVideos code (56 bytes)    
11-23 09:45:17.867: WARN/dalvikvm(210): VFY: unable to find class referenced in signature (Lcom/google/api/client/http/HttpTransport;)      
11-23 09:45:17.877: WARN/dalvikvm(210): VFY: unable to find class referenced in signature (Lcom/google/api/client/http/HttpTransport;)      
11-23 09:45:17.927: WARN/dalvikvm(210): VFY: unable to resolve exception class 13 (Lcom/google/api/client/http/HttpResponseException;)   
11-23 09:45:17.937: WARN/dalvikvm(210): VFY: unable to find exception handler at addr 0x13     
11-23 09:45:17.947: WARN/dalvikvm(210): VFY:  rejected Lcom/testcom/main;.onCreate (Landroid/os/Bundle;)V     
11-23 09:45:17.957: WARN/dalvikvm(210): VFY:  rejecting opcode 0x0d at 0x0013    
11-23 09:45:17.957: WARN/dalvikvm(210): VFY:  rejected Lcom/testcom/main;.onCreate     (Landroid/os/Bundle;)V
11-23 09:45:18.017: WARN/dalvikvm(210): Verifier rejected class Lcom/testcom/main;    
11-23 09:45:18.017: WARN/dalvikvm(210): Class init failed in newInstance call     (Lcom/testcom/main;)
11-23 09:45:18.027: DEBUG/AndroidRuntime(210): Shutting down VM     
11-23 09:45:18.037: WARN/dalvikvm(210): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
11-23 09:45:18.047: ERROR/AndroidRuntime(210): Uncaught handler: thread main exiting due to uncaught exception     
11-23 09:45:18.107: DEBUG/dalvikvm(30): GC freed 2 objects / 48 bytes in 568ms    
11-23 09:45:18.167: ERROR/AndroidRuntime(210): java.lang.VerifyError: com.testcom.main    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at    java.lang.Class.newInstanceImpl(Native Method)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at java.lang.Class.newInstance(Class.java:1479)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)   
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)   
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.os.Handler.dispatchMessage(Handler.java:99)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.os.Looper.loop(Looper.java:123)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at android.app.ActivityThread.main(ActivityThread.java:4363)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at java.lang.reflect.Method.invokeNative(Native Method)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at java.lang.reflect.Method.invoke(Method.java:521)       
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)    
11-23 09:45:18.167: ERROR/AndroidRuntime(210):     at dalvik.system.NativeStart.main(Native Method)    
11-23 09:45:18.237: INFO/ActivityThread(205): Publishing provider    com.android.email.provider: com.android.email.provider.EmailProvider   

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Это не связано с разрешениями.

Я подозреваю, что происходит то, что у вас есть com.google.api.client.googleapis.GoogleTransport на вашем пути к классам компиляции, но не на пути к классам времени выполнения.Или, возможно, вы компилируете для одной версии, но работаете с другой версией библиотеки.

Это случается со мной, например, когда я использую Maven, что по какой-то причине не учитывается при работе через Eclipse.Вы должны убедиться, что зависимость от пакета google-api-java-client явно указана в .classpath.

1 голос
/ 28 ноября 2010

Эй, все (только два человека) Я обнаружил, что проблема в том, что путь к моей библиотеке неверен. Путь к классам компиляции верен, но путь к классам времени выполнения неверен в затмении. Хотя я не знаю, как обстоят дела с моим решением.JAR-файл под проектом напрямую, вместо создания пользовательской библиотеки (которая включает в себя .jar-файл) и добавления ее в проект. Итак, пример youtubesample может работать на Android, но вам нужно обратить внимание на настройки classpath

0 голосов
/ 22 ноября 2010

Вы обязательно должны добавить что-то вроде:

 <uses-library android:name="com.google.android.something" />

в вашем манифесте (я не знаю, что это за транспорт Google)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...