Shared Preferences(xml形式)、檔案儲存與資料庫儲存。
Android 並沒有一個共同的儲存空間讓所有應用程式存取,因此若要讓其它的應用程式使用我的資料,就必須使用Content Provider,用來分享資料用的。
DataStorageDemo.java
package wandroide.blogspot.com; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class DataStorageDemo extends Activity implements OnClickListener { private TextView mTextView = null; private EditText mEditText = null; private Button mSharedPrefButton = null; private Button mFileButton = null; private Button mSqliteButton = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById(R.id.ltextview); mEditText = (EditText)findViewById(R.id.ledittext); mSharedPrefButton = (Button)findViewById(R.id.lsharedprefbutton); mFileButton = (Button)findViewById(R.id.lfilebutton); mSqliteButton = (Button)findViewById(R.id.lsqlitebutton); mSharedPrefButton.setOnClickListener(this); mFileButton.setOnClickListener(this); mSqliteButton.setOnClickListener(this); } public void onClick(View v) { if(v == mSharedPrefButton) { //write SharedPreferences pref = getSharedPreferences("PREF_DATA", MODE_WORLD_READABLE); SharedPreferences.Editor preEdt = pref.edit(); preEdt.putString("PREF_EDITTEXT", mEditText.getText().toString()); preEdt.commit(); //read String pref_edittext = pref.getString("PREF_EDITTEXT", "hello shared preference"); mTextView.setText(pref_edittext); mEditText.setText(""); } else if(v == mFileButton) { } else if(v == mSqliteButton) { } } }ContentProviderDemo.java
package wnadroide.blogspot.com; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; public class ContentProviderDemo extends Activity implements OnClickListener { private TextView mTextView = null; private Button mGetPrefButton = null; private Button mContentProviderButton = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById(R.id.ltextview); mGetPrefButton = (Button)findViewById(R.id.lgetprefbutton); mContentProviderButton = (Button)findViewById(R.id.lcontentproviderbutton); mGetPrefButton.setOnClickListener(this); mContentProviderButton.setOnClickListener(this); } public void onClick(View v) { if(v == mGetPrefButton) { Context otherApp = null; try { otherApp = createPackageContext("wandroide.blogspot.com", 0); } catch (Exception e) { Log.d("wandroide", e.toString()); finish(); } SharedPreferences pref = otherApp.getSharedPreferences("PREF_DATA",MODE_WORLD_READABLE); String pref_edittext = pref.getString("PREF_EDITTEXT", "get不到"); mTextView.setText(pref_edittext); } else if(v == mContentProviderButton) { Cursor c = getContentResolver().query(Uri.parse("content://wade.dbprovider"), null, null, null, null); if(c.getCount() != 0) { c.moveToFirst(); String name = c.getString(c.getColumnIndex("name")); if ( name == null ) return; mTextView.setText(name); } } } }DBProvider.java
package wnadroide.blogspot.com; import android.content.ContentProvider; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; public class DBProvider extends ContentProvider { Context mCtx; SQLiteDatabase db; @Override public int delete(Uri arg0, String arg1, String[] arg2) { return -1; } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { return null; } @Override public boolean onCreate() { mCtx = getContext(); DoDB dbHelper; dbHelper = new DoDB(mCtx); db = dbHelper.getWritableDatabase(); return true; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor c = db.rawQuery("select * from nametable;", null); return c; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; } }DoDB.java
package wnadroide.blogspot.com; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DoDB extends SQLiteOpenHelper { private final static String DATABASE_NAME = "namedb"; private final static int DATABASE_VERSION = 1; private final static String TABLE_NAME = "nametable"; public final static String FIELD_NAME = "name"; public DoDB(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_NAME + ")"; db.execSQL(sql); ContentValues cv = new ContentValues(); cv.put(FIELD_NAME, "aaaaa"); db.insert(TABLE_NAME, null, cv); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { } public Cursor select() { return null; } }AndroidManifest.xml
<provider android:name=".DBProvider" android:authorities="wade.dbprovider"> </provider>
沒有留言:
張貼留言