Android 不同应用之间的Intent pass Object

Android Intent pass Object between different different apps

我有这个 Activity(MainActivity,来自 package package com.example.myapplication)收到 class 的 IntentBeanValidacion ".

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Bundle willirex = getIntent().getExtras();

        if(willirex!=null)
        {
            BeanValidacion datos = (BeanValidacion) willirex.get("paramIn");

            Toast.makeText(MainActivity.this,datos.getIdNumber(),Toast.LENGTH_LONG).show();


        }

我想用不同的 APK(包 com.adon.intents)调用它并发送一个 Intent,就像我对 String Intents 所做的那样,但是这次,我想要发送 class 的对象 "BeanValidacion":


protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BeanValidacion datos = new BeanValidacion();
        datos.setIdNumber("12345");
        Intent next = new Intent();
        next.setClassName("com.example.myapplication", "com.example.myapplication.MainActivity");
        next.putExtra("paramIn", datos);

        startActivity(next);

    }

当我执行 com.adon.intents APK 发送意图时,我在 com.example.myapplication 上收到此错误:

ClassNotFoundException reading a Serializable object (name = com.adon.intents.BeanValidacion

这一行:

Toast.makeText(MainActivity.this,datos.getIdNumber(),Toast.LENGTH_LONG).show();

仅发送 String 时不会发生这种情况,但我在解决这个问题时遇到了问题。

此致

您应该将 BeanValidacion.java 文件放在第二个应用程序的确切包层次结构 com.adon.intents.BeanValidacion 中。此外,两个 类 应该具有相同的 serialVersionUID.