1. 程式人生 > >不同APP通過SharedPreferences傳遞資料(共享資料)

不同APP通過SharedPreferences傳遞資料(共享資料)

1、寫入資料APP

[java] view plain copy print?
  1. publicclass MainActivity extends Activity {  
  2.     private SharedPreferences putPreferences;  
  3.     private Editor putEditor;  
  4.     @Override
  5.     protectedvoid onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_main);  
  8.         // 將伺服器資訊寫入serverInfo.xml
  9.         findViewById(R.id.buttonPut).setOnClickListener( new View.OnClickListener() {  
  10.             @Override
  11.             publicvoid onClick(View v) {  
  12.                 // TODO Auto-generated method stub
  13.                 putPreferences = getSharedPreferences("serverInfo", Context.MODE_WORLD_READABLE);  
  14.                 putEditor = putPreferences.edit();  
  15.                 putEditor.putString("serverIP""192.168.1.102");  
  16.                 putEditor.putString("password""123456");  
  17.                 putEditor.commit();  
  18.                 Toast.makeText(MainActivity.this,"伺服器資訊成功寫入serverInfo.xml", Toast.LENGTH_LONG).show();  
  19.             }  
  20.         });  
  21.     }  
  22.     @Override
  23.     publicboolean onCreateOptionsMenu(Menu menu) {  
  24.         // Inflate the menu; this adds items to the action bar if it is present.
  25.         getMenuInflater().inflate(R.menu.main, menu);  
  26.         returntrue;  
  27.     }  
  28. }  
public class MainActivity extends Activity {

	private SharedPreferences putPreferences;
	private Editor putEditor;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 將伺服器資訊寫入serverInfo.xml
		findViewById(R.id.buttonPut).setOnClickListener( new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				putPreferences = getSharedPreferences("serverInfo", Context.MODE_WORLD_READABLE);
				putEditor = putPreferences.edit();
				putEditor.putString("serverIP", "192.168.1.102");
				putEditor.putString("password", "123456");
				putEditor.commit();
				Toast.makeText(MainActivity.this,"伺服器資訊成功寫入serverInfo.xml", Toast.LENGTH_LONG).show();
			}
					
		});
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}



2、獲取資料APP

[java] view plain copy print?
  1. publicclass MainActivity extends Activity {  
  2.     private SharedPreferences getPreferences;  
  3.     @Override
  4.     protectedvoid onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.         //從serverInfo.xml獲取伺服器資訊
  8.         findViewById(R.id.buttonGet).setOnClickListener(new View.OnClickListener() {  
  9.             @Override
  10.             publicvoid onClick(View v) {  
  11.                 // TODO Auto-generated method stub
  12.                 try {  
  13.                     Context context=createPackageContext("com.example.putprefapp", Context.CONTEXT_IGNORE_SECURITY);  
  14.                     getPreferences=context.getSharedPreferences("serverInfo", MODE_WORLD_READABLE);  
  15.                     String serverIP=getPreferences.getString("serverIP","");  
  16.                     String serverPwd=getPreferences.getString("password""");  
  17.                     Toast.makeText(MainActivity.this"伺服器資訊如下:IP地址:" +serverIP+"; 密碼:"+serverPwd, Toast.LENGTH_LONG).show();  
  18.                 } catch (NameNotFoundException e) {  
  19.                     // TODO Auto-generated catch block
  20.                     e.printStackTrace();  
  21.                 }  
  22.             }  
  23.         });  
  24.     }  
  25.     @Override
  26.     publicboolean onCreateOptionsMenu(Menu menu) {  
  27.         // Inflate the menu; this adds items to the action bar if it is present.
  28.         getMenuInflater().inflate(R.menu.main, menu);  
  29.         returntrue;  
  30.     }  
  31. }  
public class MainActivity extends Activity {

	private SharedPreferences getPreferences;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//從serverInfo.xml獲取伺服器資訊
		findViewById(R.id.buttonGet).setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try {
					Context context=createPackageContext("com.example.putprefapp", Context.CONTEXT_IGNORE_SECURITY);
					getPreferences=context.getSharedPreferences("serverInfo", MODE_WORLD_READABLE);
					String serverIP=getPreferences.getString("serverIP","");
					String serverPwd=getPreferences.getString("password", "");
					Toast.makeText(MainActivity.this, "伺服器資訊如下:IP地址:" +serverIP+"; 密碼:"+serverPwd, Toast.LENGTH_LONG).show();
				} catch (NameNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

3、關於android:sharedUserId

        上面的兩個工程中並沒有對Android:sharedUserId屬性進行設定。這個屬性是在查資料時看到的:意思是說,在manifest.xml裡面將兩個應用程式的android:sharedUserId屬性設為相同的就可以對SharedPreferences檔案進行寫。(此處並沒有驗證)