我只是为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>