2017-02-27 96 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