Запустите приложение из другого приложения, включая параметры.

У меня есть 2 приложения. App1 и App2. App1: кнопка "Редактировать текст +" App2: просто текстовый вид.

это кнопка onClick

@Override
 public void onClick(View v) {

 Intent sendIntent = getPackageManager().getLaunchIntentForPackage("com.example.app2");
 sendIntent.setAction(Intent.ACTION_SEND);
 sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
 sendIntent.setType("text/plain");
 startActivity(sendIntent);

 }

App1 должен запустить App2, настроив текстовое представление App2

EditText text;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 Intent intent = getIntent();
 String action = intent.getAction();
 String type = intent.getType();

 if (Intent.ACTION_SEND.equals(action) && type != null) {
 if ("text/plain".equals(type)) {
 String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
 text.setText(sharedText);
 }
 }
}

но у меня есть nullpointerexception. Помощь plz и спасибо

1 ответ

Поэтому вам нужно отправить некоторые данные из APP1 в APP2. В вашем коде NullPointer происходит потому, что вы не инициализировали EditText text, вызвав findViewById(). Кроме того, вы можете сделать кодирование простым. Попробуйте следующее:

APP1:

@Override
 public void onClick(View v) {

 Intent sendIntent = getPackageManager().getLaunchIntentForPackage("com.example.app2");
 sendIntent.putExtra("my_text", "This is my text to send.");
 startActivity(sendIntent);

 }

APP2:

EditText text;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 text=(EditText)findViewById(R.id.edittext1);// This was missing in your code.
 Intent intent = getIntent();

if (intent.hasExtra("my_text")) {
 String sharedText = intent.getStringExtra("my_text");
 text.setText(sharedText);
}
}

licensed under cc by-sa 3.0 with attribution.