2011年2月10日木曜日

AccountManagerService.addAccount での署名チェック先

さっきの記事の署名チェック箇所における
RegisteredServicesCache.ServiceInfoがどこにあるのか?
それを突き止めるためにさらに調査。

/frameworks/base/core/java/android/content/pm/RegisteredServicesCache.java


コンストラクタにこんなものが、


100         File dataDir = Environment.getDataDirectory();
101         File systemDir = new File(dataDir, "system");
102         File syncDir = new File(systemDir, "registered_services");
103         mPersistentServicesFile = new AtomicFile(new File(syncDir, interfaceName + ".xml"));


怪しいのでRoot化した端末で中を見てみる。

adb shell
su
cd /data/system/registerd_services
cat android.accounts.AccountAuthenticator.xml

こんなん出ました。


<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<services>
<service uid="10041" type="com.android.exchange" />
<service uid="10019" type="com.google" />
</services>


ここに追加すれば独自アカウントも入れられるかな?

あと同じフォルダに、
android.content.SyncAdapter.xml
なるものが、


<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<services>
<service uid="10041" authority="com.android.contacts" accountType="com.android.exchange" />
<service uid="10019" authority="com.android.contacts" accountType="com.google" />
<service uid="10038" authority="gmail-ls" accountType="com.google" />
<service uid="10019" authority="subscribedfeeds" accountType="com.google" />
<service uid="10041" authority="com.android.calendar" accountType="com.android.exchange" />
<service uid="10019" authority="com.android.calendar" accountType="com.google" />
</services>

ここに追加したらどうなるんだろう?同期してくれる?どうやって?

0 件のコメント:

コメントを投稿