3

经过大量的谷歌搜索,我找不到任何方法将对象从一个应用程序传递到另一个应用程序。虽然我知道我们可以使用 Parcel 将对象从一个活动传递到另一个活动,但是如何在应用程序之间做到这一点?我的对象是这个

public class MyObject
{
    private String name;
    public String getName()
    {
        return this.name;
    }
    public void setName(String name)
    {
        this.name=name;
    }
}

那么如何像我们在活动之间传递对象一样做到这一点

intent.putExtra("key",new MyOject());

4

6 回答 6

3

我假设你负责这两个应用程序。

以下哪种情况是真的?

  • 两个应用程序都依赖于单个数据存储
  • 应用程序是相当独立的,但用户可能希望从一个到另一个共享一些数据

如果第一种情况属实,通常的方法是创建一个 Android 内容提供程序(如前所述)或一个服务,它使用 AIDL 语言公开一个 API。两个应用程序都将依赖于内容提供者或服务。

有关 AIDL 和服务的信息,请参见此处:http: //developer.android.com/reference/android/app/Service.html http://developer.android.com/guide/components/aidl.html

但是,如果应用程序是对等的,那么关于 Intents 的现有答案是好的。一个应用程序可以简单地使用 触发另一个应用程序startActivity,或者您可能希望为用户提供一种方式来选择从一个应用程序共享对象到另一个应用程序。看看这个:http: //developer.android.com/training/sharing/send.html

于 2013-02-05T13:58:40.377 回答
1

一个建议可能是使用ContentProviders

来自参考:

内容提供者是 Android 应用程序的主要构建块之一,为应用程序提供内容。它们封装数据并通过单个 ContentResolver 接口将其提供给应用程序。

另一个建议可能是使用 SharedPreferences,getSharedPreferences和正确的mode。但正如您在参考资料中看到的那样,某些模式自 API 级别 17 以来已被弃用。

希望这会有所帮助,如果没有在下面发表评论

于 2013-02-01T09:33:11.383 回答
1

还有另一种在全局库中使用这些对象和方法的最佳方法,并将该库添加到您的 android 项目中。您可以在该库中声明自己的类,另一个功能是 jar 文件,您可以将 taht 类放在 jar 文件中和您可以重新使用它....此链接可能对您有用..................如何创建自己的 Android 开发库以在您编写的每个程序中使用?

于 2013-02-11T10:33:07.450 回答
0

如果您必须共享相对非常小的数据,请使用易于实现的 Shared Preferences 。

public static void addData(Context context, String data) {
    SharedPreferences sharedPref = context.getSharedPreferences(app_name, 0);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("Name", data);
    editor.commit();
    }

public static String getData(Context context) {
    SharedPreferences sharedPref = context.getSharedPreferences(app_name, 0);
    String fontSize = sharedPref.getString("Name", "default");
    return fontSize;
    }

或者,如果您有相当大的数据,您也可以使用Content Provider 。

于 2013-02-06T11:09:51.060 回答
-1

不幸的是,如果它不是 Parcelable,则您不能在应用程序之间按原样共享对象。

但是你可以在服务和 AIDL 的帮助下做到这一点:http: //developer.android.com/guide/components/aidl.html

于 2013-02-01T09:43:44.160 回答
-2

传递对象黑白活动:

public class MyObject  implements Parcelable{

    private String name;
    public String getName()
    {
    return this.name;
    }
    public void setName(String name)
    {
     this.name=name;
    }

    public MyObject() {

    }

    // Parcelling part
    public MyObject(Parcel in){
        this.name = in.readString();
    }


    @Override
    public int describeContents() {
        return 0;
    }


    @Override
    public void writeToParcel(Parcel dest, int arg1) {
        dest.writeString(this.name);
    }



    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
        public MyObject createFromParcel(Parcel in) {
            return new MyObject(in); 
        }

        public MyObject[] newArray(int size) {
            return new MyObject[size];
        }
    };
}


//set Intent
Intent i= new Intent();
MyObject  o;
i.putExtra("obj", o);



//getIntent
Bundle data = getIntent().getExtras();
MyObject obj = data.getParcelable("obj");
于 2013-02-01T09:46:19.697 回答