Android Sharedpreferenceデータ共有
1つのアプリケーションが別のアプリケーションのデータにアクセスします.アクセスされたアプリケーションのデータがグローバルに表示される必要があることを前提とします.
手順:
1、別のアプリケーションのコンテキストを取得する
PackageNameはアプリケーションのパッケージ名です
2.SharedPreferencesオブジェクトを取得します.
具体的なdemoコードは以下の通りです.
アクセスされたアプリケーションのキーコードは次のとおりです.
手順:
1、別のアプリケーションのコンテキストを取得する
PackageNameはアプリケーションのパッケージ名です
other=createPackageContext(packageName, CONTEXT_IGNORE_SECURITY);
2.SharedPreferencesオブジェクトを取得します.
具体的なdemoコードは以下の通りです.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onPhone(View v){
Intent intent = new Intent(
Intent.ACTION_CALL,
Uri.parse("tel:"
+getOherAppXml("com.example.phonewrite")
));
startActivity(intent);
MainActivity.this.finish();
System.exit(0);
}
private String getOherAppXml(String packageName){
Context other=null;
try {
other=createPackageContext(packageName, CONTEXT_IGNORE_SECURITY);
SharedPreferences preferences=other.getSharedPreferences("Config", other.MODE_WORLD_READABLE);
return preferences.getString("phone", "13047220888");
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
アクセスされたアプリケーションのキーコードは次のとおりです.
public class MainActivity extends ActionBarActivity {
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText=(EditText) findViewById(R.id.ed_write_phone);
}
public void onPhone(View v){
SharedPreferences preferences=getSharedPreferences("Config",MODE_WORLD_READABLE);
preferences.edit().putString("phone", mEditText.getText().toString().trim()).commit();
Toast.makeText(MainActivity.this," ",0).show();
}
}