Android插件unity不打开unity权限对话框



我只是为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应用程序中工作得很好,但不能在unity上询问。

下面是我的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,但没有提示权限。请帮助

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

来自getAuthToken SDK参考:

注意:如果你的应用程序要在API级别22或之前工作,这些平台需要USE_CREDENTIALS权限。参见文档

1。转到<UnityInstallationDirecory>EditorDataPlaybackEnginesAndroidPlayerApk,复制AndroidManifest.xml文件到你的<ProjectName>AssetsPluginsAndroid

2。现在打开从<ProjectName>AssetsPluginsAndroid复制的Manifest文件,并将<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>

相关内容

  • 没有找到相关文章

最新更新