Android插件统一没有打开统一权限对话?

时间:2016-09-30 15:13:03

标签: android-studio unity3d plugins android-unity-plugin

我只是为了统一开发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");
                     }));
                     */
                }
            }

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

1 个答案:

答案 0 :(得分:0)

您可能错过了使用USE_CREDENTIALS所需的权限(AccountManager)。

来自getAuthToken SDK reference

  

注意:如果将您的应用定位到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>