2016-09-30 1 views
0

나는 단결을위한 안드로이드 플러그인을 개발하고 있으며, 단결과 안드로이드 플러그인간에 데이터를 성공적으로 교환 할 수있다. 내 코드 플러그인 내 안드로이드에서화합을위한 안드로이드 플러그인은 화일 허가 대화를하지 않습니까?

String SCOPE = "https://www.googleapis.com/auth/youtube"; 
am.getAuthToken(myAccount_[0], "oauth2:" + SCOPE, null, this, 
     new OnTokenAcquired(), null); 

입니다 그것은 나를 내 응용 프로그램이 유튜브에 액세스 할 수 있도록 메시지를 표시합니다.

내 안드로이드 응용 프로그램에 대해서는 잘 작동하지만 단일성에 대해서는 질문 할 수 없습니다. 그런 식이다

public void YoutubeSubscriber() { 
     AccountManager am = AccountManager.get(context); 
     Account[] myAccount_ = AccountManager.get(context).getAccountsByType("com.google"); 
     Log.d("==============>all", String.valueOf(myAccount_)); 
     Log.d("==============>single", String.valueOf(myAccount_[0])); 

     String SCOPE = "https://www.googleapis.com/auth/youtube"; 
     am.getAuthToken(myAccount_[0], "oauth2:" + SCOPE, null, null, 
       new OnTokenAcquired(), null); 
     Toast.makeText(this.context, myAccount_[0].toString(), Toast.LENGTH_SHORT).show(); 
    } 

과 단결이를 사용하여 :

여기 내 안드로이드의 코드입니다.

  using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) 
      { 
       info.text = "activity"; 
       activityContext = activityClass.GetStatic<AndroidJavaObject>("currentActivity"); 
      } 

      using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.thegamecontriver.androidlib.ToastExample")) 
      { 
       if (pluginClass != null) 
       { 

        toastExample = pluginClass.CallStatic<AndroidJavaObject>("instance"); 
        toastExample.Call("setContext", activityContext); 

        info.text = "After "; 
        toastExample.Call("YoutubeSubscriber"); 



        /* 
        activityContext.Call("runOnUiThread", new AndroidJavaRunnable(() => { 
         toastExample.Call("YoutubeSubscriber"); 
        })); 
        */ 
       } 
      } 

참고 : 나는 토스트를 볼 수 있지만 권한은 프롬프트되지 않습니다. 제발 도와주세요

답변

0

AccountManager을 사용하려면 필요한 권한 (USE_CREDENTIALS)이 누락되었을 수 있습니다.

reference SDK getAuthToken에서 :

참고 : API 레벨 22과 USE_CREDENTIALS 권한이 이러한 플랫폼에 필요한, 전에 작동하도록 응용 프로그램을 대상으로합니다. <ProjectName>Assets\Plugins\Android에서 복사 된 매니페스트 파일을 열고 그것을 <uses-permission android:name="android.permission.USE_CREDENTIALS"/>를 추가하려면 <ProjectName>Assets\Plugins\Android

2.Now에 AndroidManifest.xml 파일을 복사, 에 대한 API 수준 <UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Apk에 22

1.Go에서이 기능을 문서를 참조하십시오. 저장, 빌드 및 실행. 이것이 허가 문제라면 지금 해결해야합니다. 당신의 AndroidManifest.xml이 (유니티 5.4)과 같이해야합니까

은 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.unity3d.player" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <uses-permission android:name="android.permission.USE_CREDENTIALS"/> 

    <application 
    android:theme="@style/UnityThemeSelector" 
    android:icon="@drawable/app_icon" 
     android:label="@string/app_name" 
     android:debuggable="true"> 
     <activity android:name="com.unity3d.player.UnityPlayerActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 
     </activity> 
    </application> 
</manifest> 
+0

나는 권한을 추가했습니다. 아직 행운이 없다. – umair

+0

자바 측에서는'try catch' 절의'YoutubeSubscriber' 함수에 코드를 넣고 새로운 예외가 있는지 확인한다. 'Log.d'로 예외 메시지를 출력하십시오. – Programmer