gpt4 book ai didi

android - Unity 插件的运行时错误(来自 Activity 外部的 startActivity..)

转载 作者:行者123 更新时间:2023-11-29 22:39:58 24 4
gpt4 key购买 nike

我在我的统一项目中实现了两个插件。第一个插件是 live wallpaper其中包含主要 Activity 。第二个插件是 native sharing .我所做的是从包含主要 Activity 的第一个插件中获取上下文引用:

    public static Context getContext() 
{
instance.startActivity(myIntent);
return instance;
}

在统一脚本中

Main_Context = appClass.CallStatic<AndroidJavaObject>("getContext");

然后我使用 Main_Context 引用调用第二个插件中的共享功能

new NativeShare().AddFile(Application.persistentDataPath + "/img Shot.png").SetSubject(" Image Share").SetText("").Share(Main_Context);

问题是我一直收到这个错误:

Calling startActivity() from outside of an Activity  context requires the  
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

所以我似乎有些需要在调用 startactivity() 之前在第二个插件中添加这一行

myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

有没有更简单的方法可以在不编辑已编译插件的情况下解决这个错误?

最佳答案

好吧,事实证明动态壁纸项目及其插件扩展了标准 UnityPlayerActivity 类,这意味着 currentActivity 已被覆盖并且 com.unity3d .player.UnityPlayer 不再存在。因此,不要像这样获取 currentActivity:

    private static AndroidJavaObject Context
{
get
{
if( m_context == null )
{
using( AndroidJavaObject unityClass = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) )
{
m_context = unityClass.GetStatic<AndroidJavaObject>( "currentActivity" );
}
}

return m_context;
}
}

我们可以使用扩展和覆盖标准 UnityPlayerActivity 类的插件:

    private static AndroidJavaObject Context
{
get
{
if( m_context == null )
{
using( AndroidJavaObject unityClass = new AndroidJavaClass( "ulw.ulw.ulw.UnityPlayerActivity" ) )
{
m_context = unityClass.GetStatic<AndroidJavaObject>( "activity" );
}
}

return m_context;
}

现在所有添加的插件都可以与动态壁纸项目及其插件共存。

关于android - Unity 插件的运行时错误(来自 Activity 外部的 startActivity..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59113018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com