外部プログラムにアクセスするSharedPreference


プロジェクト1:sharedpreferenceファイルを作成し、パッケージ名:com.shared.p1
注意1:SharedPreferences shared_f = getSharedPreferences("shared_f_name", Context.MODE_WORLD_READABLE);2番目のパラメータMODEはContextに設定.MODE_WORLD_READADBLEまたはContext.MODE_WORLD_WRITEABLE
demo source:
package com.shared.p1;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Shared_f1Activity extends Activity implements OnClickListener {

	Button button1, button2, button3;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		button3 = (Button) findViewById(R.id.button3);

		button1.setOnClickListener(this);
		button2.setOnClickListener(this);
		button3.setOnClickListener(this);
	}

	public void onClick(View v) {
		// TODO Auto-generated method stub

		SharedPreferences shared_f = getSharedPreferences("TEST", Context.MODE_WORLD_READABLE); 
		SharedPreferences.Editor editor = shared_f.edit();
		
		switch (v.getId()) {

		case R.id.button1:
			editor.putString("name", getResources().getString(R.string.name));
			editor.commit();
			break;
		case R.id.button2:
			editor.putInt("age", Integer.parseInt(getResources().getString(R.string.age)));
			editor.commit();
			break;
		case R.id.button3:
			String name = shared_f.getString("name", "Defalut People");
			int age = shared_f.getInt("age", 0);
			
			Toast.makeText(Shared_f1Activity.this, name+":"+age, Toast.LENGTH_SHORT).show();
			break;
		}
	}
}

レイアウトファイルには3つのボタンしかありません
プロジェクト2:プロジェクト1のsharedPreferenceファイル、package comにアクセスできます.shared.p1;
プロジェクト1のsharedPreferenceファイルにアクセスするには、プロジェクト1のcontextを取得する必要があります.
              f1Context = createPackageContext("com.shared.p1", Context.CONTEXT_IGNORE_SECURITY);
demo2 source
package com.shared.f2;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Shared_f2Activity extends Activity implements OnClickListener{
	
	Button button1;
	private Context f1Context;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(this);
        
        try {
			f1Context = createPackageContext("com.shared.p1", Context.CONTEXT_IGNORE_SECURITY);
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }

    public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId())
		{
			case R.id.button1:
				SharedPreferences sharedPreferences = f1Context.getSharedPreferences("TEST", Context.MODE_WORLD_READABLE);
				String name = sharedPreferences.getString("name", "defValue");
				int age = sharedPreferences.getInt("age", 0);
				
				button1.setText(name+":"+age);
				break;
		}
		
	}
}