2016-10-11 3 views
5

일부 기기에서 임의의 예외가 발생합니다. 내가 뭘 잘못하고 있는지 궁금해. 이 문제에 대해 더 많은 정보를 제공해주십시오. 나는이 질문을 더 유용하게 할 수 있도록 내가 무엇을 제공 할 수 있는지 알지 못한다. 내 앱에서 힌트를 얻지 못하고있다.키가 com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME 인 AndroidManifest.xml

0 java.lang.RuntimeException: Unable to create service com.google.android.gms.cast.framework.media.MediaNotificationService: java.lang.IllegalStateException: The fully qualified name of the implementation of OptionsProvider must be provided as a metadata in the AndroidManifest.xml with key com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME. 
1 at android.app.ActivityThread.handleCreateService(ActivityThread.java:2474) 
2 at android.app.ActivityThread.access$1600(ActivityThread.java:130) 
3 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 
4 at android.os.Handler.dispatchMessage(Handler.java:99) 
5 at android.os.Looper.loop(Looper.java:137) 
6 at android.app.ActivityThread.main(ActivityThread.java:4847) 
7 at java.lang.reflect.Method.invokeNative(Native Method) 
8 at java.lang.reflect.Method.invoke(Method.java:535) 
9 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
10 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11 at dalvik.system.NativeStart.main(Native Method) 
12 Caused by: java.lang.IllegalStateException: The fully qualified name of the implementation of OptionsProvider must be provided as a metadata in the AndroidManifest.xml with key com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME. 
13 at com.google.android.gms.cast.framework.CastContext.zzbd(Unknown Source) 
14 at com.google.android.gms.cast.framework.CastContext.getSharedInstance(Unknown Source) 
15 at com.google.android.gms.cast.framework.media.MediaNotificationService.onCreate(Unknown Source) 
16 at android.app.ActivityThread.handleCreateService(ActivityThread.java:2458) 
17 ... 10 more 
18 java.lang.IllegalStateException: The fully qualified name of the implementation of OptionsProvider must be provided as a metadata in the AndroidManifest.xml with key com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME. 
19 at com.google.android.gms.cast.framework.CastContext.zzbd(Unknown Source) 
20 at com.google.android.gms.cast.framework.CastContext.getSharedInstance(Unknown Source) 
21 at com.google.android.gms.cast.framework.media.MediaNotificationService.onCreate(Unknown Source) 
22 at android.app.ActivityThread.handleCreateService(ActivityThread.java:2458) 
23 at android.app.ActivityThread.access$1600(ActivityThread.java:130) 
24 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293) 
25 at android.os.Handler.dispatchMessage(Handler.java:99) 
26 at android.os.Looper.loop(Looper.java:137) 
27 at android.app.ActivityThread.main(ActivityThread.java:4847) 
28 at java.lang.reflect.Method.invokeNative(Native Method) 
29 at java.lang.reflect.Method.invoke(Method.java:535) 
30 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
31 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
32 at dalvik.system.NativeStart.main(Native Method) 

편집 - ManifestFile 앱이 Google 전송 SDK에 의존 어딘가에 MediaNotificationService에 연결을 시도

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      package="com.mcruiseon.buseeta"> 


    <!-- For Options menu call support --> 
    <uses-permission android:name="android.permission.CALL_PHONE"/> 

    <!-- To auto-complete the email text field in the login form with the user's emails --> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

    <!-- To auto-complete the email text field in the login form with the user's emails --> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <!-- For the background service to run forever --> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 

    <!-- For Current Location on Driver App --> 
    <permission 
     android:name="${manifestApplicationId}.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 

    <uses-permission android:name="${manifestApplicationId}.permission.MAPS_RECEIVE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

    <!-- For QR Code --> 
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.CAMERA"/> 
    <uses-feature android:name="android.hardware.Camera"/> 
    <uses-permission android:name="android.permission.GET_TASKS"/> 

    <!-- Google Cloud Messaging --> 
    <uses-permission 
     android:name="${manifestApplicationId}.permission.C2D_MESSAGE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 

    <application 
     android:name="com.mcruiseon.buseeta.InitializingApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version"/> 

     <meta-data 
      android:name="com.google.android.geo.API_KEY" 
      android:value="${mapsKey}"/> 

     <activity 
      -- MY ACTIVITIES -- 
     </activity> 

    </application> 

</manifest> 
+0

당신은 당신의 manifest.xml을 공유시겠습니까? OptionsProvider 나 CastContext 구현을 앱 (또는 종속 lib, 모듈)에서도 가지고 있습니까? – Devrim

+0

이 페이지를 보았습니까? 매니페스트에 일부 정보가 누락되었거나 처음에는 정보가 없습니다. 당신의 'CastOptionsProvider'는 인스턴스화해야 할 것을 알 수 있도록 그 키의 값에 풀 네임을 넣어야합니다. https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext –

+0

CastOptionsProvider를 사용하는 활동이나 호출이 없습니다. – Siddharth

답변

4

. OptionsProvider를 확장하는 클래스를 만들어야합니다. 그런 다음 다음과 같이 매니페스트에서 생성 한 클래스를 등록해야합니다 이것에

<application> 
    ... 
    <meta-data 
    android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME" 
    android:value="com.example.myapp.CastOptionsProvider" /> 
</application> 

정보는 여기에서 찾을 수 있습니다 : https://developers.google.com/cast/docs/android_sender_integrate#initialize_the_cast_context

+0

내 프로젝트 경로에서'MediaNotificationService'를 검색했는데'http : // localhost : 63342/ejc0j33aagk0icfd5p5uzxok4wxbcb1nirr6q/Buseeta/build/intermediate/exploded-aar/com.google.android.gms/play-services- 캐스트 프레임 워크/9.4.0/AndroidManifest.xml'. 내 매니 페스트 나 코드의 다른 곳에서는'MediaNotificationService'를 사용하지 않습니다. 나는 왜 이런 기진 맥진 한가? – Siddharth

+0

나는 'gradlew clean'을 수행하고 다시 검색했다. 프로젝트 경로에서'MediaNotificationService'에 대한 참조를 찾지 못했습니다. ./gradlew assembleRelease를 수행하고 검색을 다시했는데 ** http : // localhost : 63342/ejc0j33aagk0icfd5p5uzxok4wxbcb1nirr6q/Buseeta/build/inter mediates/exploded-에서 다시 MediaNotificationService에 대한 참조를 찾을 수 없습니다. aa r/com.google.android .gms/play-services-c ast-framework/9.4.0 /'. – Siddharth

+0

이로 인해 예외가 해결 되었습니까? – Siddharth

0
public class CastOptionsProvider implements OptionsProvider { 
     @Override 
     public CastOptions getCastOptions(Context appContext) { 

     } 
    } 



<meta-data 
     android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME" 
     android:value="com.example.app.CastOptionsProvider" /> 
관련 문제