Unity 插件的运行时错误(从 Activity 外部开始 Activity..)
Runtime Error with Unity Plugins (startActivity from outside of an Activity..)
我正在我的统一项目中实现两个插件。第一个插件是 live wallpaper which contain the main activity. The second plugin is a 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?
所以我似乎有些需要在开始activity() 调用
之前在第二个插件中添加这一行
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
有没有更简单的方法可以在不编辑已编译插件的情况下解决这个错误?
好的,事实证明动态壁纸项目及其插件扩展了标准 UnityPlayerActivity
class,这意味着 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
class:
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;
}
现在所有添加的插件都可以与动态壁纸项目及其插件共存。
我正在我的统一项目中实现两个插件。第一个插件是 live wallpaper which contain the main activity. The second plugin is a 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?
所以我似乎有些需要在开始activity() 调用
之前在第二个插件中添加这一行myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
有没有更简单的方法可以在不编辑已编译插件的情况下解决这个错误?
好的,事实证明动态壁纸项目及其插件扩展了标准 UnityPlayerActivity
class,这意味着 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
class:
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;
}
现在所有添加的插件都可以与动态壁纸项目及其插件共存。