2013-02-01 42 views
3

经过大量的googeling之后,我找不到任何方法将对象从一个应用程序传递到其他应用程序。尽管我知道我们可以将对象从一个活动传递到其他活动包裹,但如何在应用程序之间做到这一点? 我的目标是这个将对象从一个应用程序传递到另一个应用程序android

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

话,怎么可能使用ContentProviders

从参考

要做到这一点,像我们一样传递

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

+0

Sry删除了我的回答,我没有读取全部你的问题。 – AMerle

+1

http://stackoverflow.com/a/12407484/646806这个? – RobinHood

回答

3

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

以下哪种情况属实?

  • 这两种应用都依赖于一个单一的数据存储
  • 的应用是相当独立的,但是用户可能想从一个共享一些数据到其他

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

在这里看到关于AIDL和服务的信息: http://developer.android.com/reference/android/app/Service.html http://developer.android.com/guide/components/aidl.html

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

+0

http://developer.android.com/training/sharing/send.html,通过使用这个解决方案,我们可以只共享那些已知的应用程序(例如URI包裹)的对象(类),但问题是发送一个应用程序已知的对象,但不包含其他的对象 –

+0

如果对象未知,您要将对象映射到哪个对象? – Tobrun

+1

你能告诉我们更多关于确切的用例吗?我看不出在逻辑上如何从一个应用程序发送一些数据到另一个应用程序,除非第二个应用程序也理解数据。 –

1

一个建议活动之间的对象:

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

另一个建议可能是使用SharedPreferences,而getSharedPreferences使用正确mode。但你可以在参考看到一些模式,因为API级别弃用17

希望这会有所帮助,如果不低于

+0

这可能是一个解决方案。但我认为应该有其他选项来分享对象。 –

-2

传递对象b/w的活动:

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"); 
+0

从问题引用:尽管我知道我们可以将对象从一个活动传递给其他使用Parcel .. – Tobrun

+0

您是否认为,这是我的问题? –

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

+0

SharedPreference的用法与您建议的一样,已在API级别17中弃用。 – Tobrun

+0

我在Developer's Documentation中看不到它。你能否提供我的来源? – gauravsapiens

+0

http://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE – Tobrun

相关问题