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 应用程序工作正常,但不能要求统一。

这是我的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");
                     }));
                     */
                }
            }

注意:我可以看到 toast,但没有提示权限。请帮忙

4

1 回答 1

0

您可能缺少使用所需的 ( USE_CREDENTIALS)权限AccountManager

getAuthTokenSDK参考

注意:如果将您的应用程序定位为在 API 级别 22 及之前的级别上运行,则这些平台需要 USE_CREDENTIALS 权限。请参阅 API 级别 22 中有关此功能的文档。

1.转到<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Apk,将AndroidManifest.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 回答