uniapp(weex)android原生插件,Module如何获取Activity对象再获取Window对象

最近一个朋友使用uniapp开发,想要一个android版的插件,大致是:android_监听截屏&不监听截屏_允许截屏$禁止截屏_javascript调用代码截屏(打一个广告,已经发布到uniapp插件市场了,插件)…,开发过程中需要在Module获取activity获取Window对象,当时走了一些弯路,如下注释处:

public class MyModule extends WXModule {

  @JSMethod (uiThread = true)
  public void printLog(String msg) {
    //mWXSDKInstance.getContext()
    //有Context了,没有activity咋办??
    Toast.makeText(mWXSDKInstance.getContext(),msg,Toast.LENGTH_SHORT).show();
  }

}

一直以为Context拿到了,获取Window对象时候就犯难了(鄙人对Android不是很熟,属于业余的,主要从事java后端服务器开发),Window需要activity.getWindow();这样获取,但是,但是怎么拿到activity呢?
没想到mWXSDKInstance.getContext()就是当前的activity对象,敲黑板,上weex部分关键源代码:

public class MainActivity extends AppCompatActivity implements IWXRenderListener {
  //注意这个就是你使用的那个东东...
  WXSDKInstance mWXSDKInstance;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //看这里,是不是豁然开朗,Module里面的mWXSDKInstance.getContext()就是当前的Activity
    //所有,童鞋们,强转一下即可:Activity activity = (Activity )mWXSDKInstance.getContext()
    mWXSDKInstance = new WXSDKInstance(this);
    mWXSDKInstance.registerRenderListener(this);
    /**
    * bundleUrl source http://dotwe.org/vue/38e202c16bdfefbdb88a8754f975454c
    */
    String pageName = "WXSample";
    String bundleUrl = "http://dotwe.org/raw/dist/38e202c16bdfefbdb88a8754f975454c.bundle.wx";
    mWXSDKInstance.renderByUrl(pageName, bundleUrl, null, null,WXRenderStrategy.APPEND_ASYNC);
  }
 }

总结:看代码

public class MyModule extends WXModule {

  //run ui thread
  @JSMethod (uiThread = true)
  public void printLog(String msg) {
    //获取Window对象
    Activity activity = (Activity )mWXSDKInstance.getContext();
    Window youWindow = activity.getWindow();
    //TODO some thing you need...
    Toast.makeText(mWXSDKInstance.getContext(),msg,Toast.LENGTH_SHORT).show();
  }
 }

你可能感兴趣的:(android,uniapp)