android sharedUserId sharedPreferences

2102 ワード

Android開発神器をお勧めします(UI特効やandroidコードライブラリの例が入っています)
ユーザーIDとファイルアクセスそれぞれのAndroidアプリケーション(.apkファイル)には、インストール時に独自のLinuxユーザーIDが割り当てられます.これにより、他のアプリケーションと接触できない砂箱が作成されます(他のアプリケーションに接触させません).このユーザIDは、インストール時に割り当てられ、デバイス上で同じ数値が保持されます.セキュリティ制限措置はプロセスレベルで発生するため、2つのpackageのコードは同じプロセスで実行されず、異なるLinuxユーザーとして表示されます.AndroidManifestを使用することができます.xmlファイルのmanifestラベルのsharedUserIdプロパティは、異なるpackageで同じユーザーIDを共有します.このようにして、この2つのpackageは同じアプリケーションとみなされ、同じユーザID(実際には必ずしもそうではない)を有し、同じファイルアクセス権限を有する.注意:セキュリティを維持するために、同じユーザIDが割り当てられるのは、2つのアプリケーションが同じ署名で署名された場合(同じsharedUserIdが要求された場合)のみです.アプリケーションに格納されているすべてのデータには、アプリケーションのユーザーIDが付与され、他のpackageではアクセスできません.これらの方法でgetSharedPreferences(String,int)、openFileOutput(String,int)、openOrCreateDatabase(String,int,SQLiteDatabase.CursorFactory)を使用して新しいファイルを作成する場合は、MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLEフラグビットは、このファイルにアクセスするために他のpackageを許可するかどうかを設定します.これらのフラグビットを設定すると、ファイルはアプリケーションに属しますが、global read and/or write権限が設定されており、他のアプリケーションでも表示されます.例えば、APK AとAPK BはいずれもC社の製品であり、ユーザーがAPK Aから登録に成功した場合.それではAPK Bを開くときは再度ログインする必要はありません.具体的には、AとBが同じUser ID:packagename APK Aに設定されているAndroidManifest:
 
<manifest xmlns:android="http://schemas。android。com/apk/res/android" package="com.Android.demo.a1" android:sharedUserId="com.c">
packagename APK A AndroidManifest: <manifest xmlns:android="http://schemas。android。com/apk/res/android" package="com.Android.demo.b1" android:sharedUserId="com.c">

 
この「com.c」がuser idです.APK Bはローカルデータベースを開くようにAPK Aのデータベースを開くことができます.APK Aは登録情報をAのデータディレクトリの下に格納する.APK Bが起動するたびにAPK Aの下のデータベースを読み込んでログインしたかどうかを判断します.APK BではAのpackage nameでAのpackagecontextを得ることができます.
 
friendContext = this.createPackageContext( "com.android.demo.a1", Context,CONTEXT_IGNORE_SECURITY);

 
このcontextでデータベースを直接開くかsharedPreferencesでAのキー値ペアを読み込むことができます.