从另一个应用程序启动应用程序,包括参数.

Met*_*lel 2 android android-intent

我有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);

        }
Run Code Online (Sandbox Code Playgroud)

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我有nullpointerexception.请帮助和thx

Niz*_*zam 9

所以你需要从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);

    }
Run Code Online (Sandbox Code Playgroud)

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);
}
}
Run Code Online (Sandbox Code Playgroud)