使用SharedPreferences在两个不同的应用程序之间发送数据

时间:2014-03-25 08:44:10

标签: java android preferences

我在Android中有两个不同的应用程序。我需要将数据从一个发送到另一个。 第一个是Activity,我将这个数据值放在sharedpreferences文件中:

SharedPreferences selector;
selector = getSharedPreferences("tecnologia", Context.MODE_WORLD_READABLE);
Editor editor = selector.edit();

select = (RadioButton) findViewById(opciones.getCheckedRadioButtonId());

switch (select.getId()) {

   case R.id.radio0:
      editor.putString("opcion", "US");
      editor.commit();
      break;
   case R.id.radio1:
      editor.putString("opcion", "UWB");
      editor.commit();
      break;
}

Intent i = new Intent(this, ServiceConexion.class);
startActivity(i);
finish();

在我启动的第二个活动中,我检查此文件并且是正确的。然后我打电话给远程服务员。

在第二个服务(第二个项目)中,我读了这个文件:

try {
        Context con = createPackageContext(
                "org.gradiant.sistole.locdisplay",
                0);
        SharedPreferences configuracion;
        configuracion = con.getSharedPreferences("tecnologia",
                MODE_PRIVATE);
        select = configuracion.getString("opcion", "00");
    } catch (NameNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

但并不总是有正确的价值。为什么呢?

2 个答案:

答案 0 :(得分:0)

您无法访问其他application data。相反,您可以。sd card或任何location创建文件,然后在两个应用程序中访问它。

答案 1 :(得分:0)

MODE_PRIVATE表示它对该应用程序是私有的,并且无法被其他应用程序访问。  你怎么能以两种方式实现它:

  1. 正如另一个答案所说,在SD卡中创建一个文件。但它很危险,因为任何其他应用程序都可以读取它。

  2. 在请求数据的应用中使用startActivityForResult(intent,requestCode),在其他应用中使用setResult

  3. P.S。:据我所知,这两款都是你的应用。