簡體   English   中英

使用SharedPreferences在兩個不同的應用程序之間發送數據

[英]Send data between two differents application using SharedPreferences

我在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();
    }

但並非總是具有正確的價值。 為什么?

您無法訪問其他application data 相反,您可以這樣做。在sd card或任何location創建文件,然后在兩個應用程序中都可以訪問它。

MODE_PRIVATE說它對那個應用程序是私有的,其他應用程序不能訪問它。 您如何通過兩種方式實現它:

  1. 另一個答案說,在SD卡中創建一個文件。 但這很危險,因為任何其他應用程序都可以讀取它。

  2. 在請求數據的應用程序中使用startActivityForResult(intent,requestCode) ,在另一個應用程序中setResult

PS :據我了解,它們都是您的應用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM