1

Unity用のAndroidプラグインを開発したばかりで、UnityとAndroidプラグインの間でデータを正常に交換できます。

私のAndroidプラグインでは、私のコードは

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

アプリに YouTube へのアクセスを許可するように求めるメッセージが表示されます。

私のAndroidアプリケーションでは問題なく動作しますが、団結を求めることはできません。

ここに私のアンドロイドのコードがあります:

 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");
                     }));
                     */
                }
            }

注: トーストを表示できますが、許可が求められません。助けてください

4

1 に答える 1

0

を使用するために必要な権限 ( USE_CREDENTIALS) が不足している可能性がありますAccountManager

getAuthTokenSDKリファレンスから:

注: API レベル 22 以前で動作するようにアプリをターゲットにする場合、これらのプラットフォームには USE_CREDENTIALS 権限が必要です。API レベル 22 のこの関数のドキュメントを参照してください。

1. に移動し<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\ApkAndroidManifest.xmlファイルを<ProjectName>Assets\Plugins\Android

2.コピーしたマニフェスト ファイルを開き、<ProjectName>Assets\Plugins\Android 追加<uses-permission android:name="android.permission.USE_CREDENTIALS"/>します。保存、ビルド、実行。これが許可の問題である場合は、これで解決されるはずです。

あなたAndroidManifest.xmlがどのように見えるべきか(Unity 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>
于 2016-09-30T16:12:32.967 に答える