小弟现在所参与的一个项目是要通过外部程序,来掉起本身自作的应用程序,
外部程序的调用方式是:
    设定被启动程序manifest.xml中的URL SCHEME,外部程序通过调用此URL来启动APP,比如:
<data android:scheme="TPCarry" />
外部程序就通过intent.setdata(uri)的方式来启动。
调用之后在程序完成所用工作之后,想通过同样的方式进行调回,并且在intent中同样携带了一些信息进行发射,但是问题出现了:
1.外部程序此时的Activity没有销毁,同时启动模式设置为singleTop或者默认的话,会重新创建一个Activity,在oncreate中能够正确接收到intent中的数据,但是按backpress回退会推掉2个,很郁闷。2.外部程序此时的Activity没有销毁,同时启动模式设置为singleTask的话,程序完全无动于衷,没有接收到任何intent信息,同样不行。
请问大神们,有什么方法能在不销毁Activity的情况下(假设这个外部程序就这一个Activity),在回调之后能成功接收到数据呢?不考虑startActivityForResult,因为对方同样是通过setData&StartActivity,来回调我的,感谢!androidurl

解决方案 »

  1.   

    设置为singleTask的话,不再调用onCreate方法了,你的intent提取数据代码是不是写这了,这里我记得要覆盖一个newIntent方法来接收新的intent信息。
      

  2.   


    谢谢你的回答,我确实写在oncreate了,但是用singleTask的话,如何提取数据呢?是说在onresume()里getintent(),这样么? 真心求教!
      

  3.   


    呵呵,你可能没看懂,我说的那个方法就是newIntent(Intent in),应该没记错,重写一下。
      

  4.   

    覆盖protected void onNewIntent(Intent intent) 
    如果你已经启动了activity 并且是singletask 那么就不会再走oncreate 而是走onNewIntent