我只是为了统一开发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");
}));
*/
}
}
注意:我可以看到吐司但权限没有提示。请帮忙
答案 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>