2017-02-27 89 views
1

我希望当我点击应用按钮firstapp时,打开第二个应用程序,因此数据通过了印刷机:我做错了什么?与其他应用程序交互:onActivityResult方法未被调用Android

Secondapp被调用,但它打印null。

应用1

package pkg.firstapp; 
public class MainActivity extends Activity{ 
    private static final int REQUEST_CODE_START_APP = 12345; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       PackageManager manager = getApplicationContext().getPackageManager(); 
       try { 
        Intent i = manager.getLaunchIntentForPackage("pkg.secondapp"); 
        if (i != null) 
        { 
         i.addCategory(Intent.CATEGORY_LAUNCHER); 
         i.putExtra("key1", "value1"); 
         i.setFlags(0); 
         setResult(RESULT_OK, i); 
         startActivityForResult(i, REQUEST_CODE_START_APP); 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 

回答

0

如果你想从意向的字符串,你应该在onCreate调用getIntent().getStringExtra("key1");onActivityResult在第二个完成后在第一个活动中被调用。阅读this了解更多信息

+0

我之前读这篇文章,但什么是错我的代码。 – GiGa

0

onActivityResult在开始其他活动结果的活动中被调用。

为了得到你要发送的数据,在第二个活动的onCreate:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    String value1 = getIntent().getStringExtra("key1"); 
} 
+0

感谢Hristo Stoyanov,现在这些应用程序工作得很好......因此不再需要onActivityResult函数和关联的控件:我如何对传递给我的数据进行检查? – GiGa

+0

我真的不明白这个问题。 –

+0

我试着用你的代码和两个应用程序工作,谢谢。我评论了onActivityResult函数和应用程序继续运作。 onActivityResult函数有什么错误?它与指导网站https://developer.android.com/training/basics/intents/result.html等同于示例pickContact()。 我很抱歉我的英语,现在明确的问题是? – GiGa