我正在创建一个 AIR 原生扩展来集成 AdMob。
我已遵循此处描述的使用外部资源的指南:http: //www.adobe.com/devnet/air/articles/ane-android-devices.html
并将 google 的 adMob jar 打包到我的本机扩展 jar 中,如下所述:AIR 3 Native Extensions for Android - Can I/How to include 3rd party library?
我有一个NewAdFunction
实现FREFunction
并由 actionscript 端调用的类。该NewAdFunction.call()
函数基本上包含以下内容:(在我的实际代码中,我有必要的尝试捕获)
Intent intent = new Intent(context.getActivity(), AdMobActivity.class);
layoutID = context.getResourceId("layout.adlayout");
intent.putExtra("layoutID", layoutID);
context.getActivity().startActivity(intent);
在上面的代码adlayout
中是一个位于 res/layout 中的 xml。我将整个 res 文件夹打包到我的最终 jar 中,并在我的测试 AIR 项目的 xml 中包含以下代码。
<application android:enabled="true" android:debuggable="true">
<activity android:name="com.mycompany.admob.AdMobActivity"></activity>
</application>
在下面的代码中,一切正常,直到达到layout.addView(adView);
此时程序崩溃,但没有通过控制台打印任何内容。
public class AdMobActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int layoutID = getIntent().getIntExtra("layoutID", -1);
setContentView(layoutID);
LinearLayout layout = (LinearLayout)findViewById(layoutID);
AdView adView = new AdView(this, AdSize.BANNER, MY_DEVELOPER_ID);
layout.addView(adView);
}
}
我能想到的只是布局可能为空,但我添加了一个跟踪函数,它不为空。