[解決済み] SecurityException: 発呼側の uid XXXX が認証側の uid と異なる。
質問
Sample Sync Adapter アプリケーションを実装しようとしたところ、上記のような例外が発生しました。この問題に関連する多くの投稿を見ましたが、満足のいく回答がありません。
そこで、以下のようにメモしておきます。 私の解決策 をここに書き留めておきます。
どのように解決するのですか?
まず、以下の条件を確認します。 この記事 :
[...] もし、あなたが
AccountManagerService
というフォームの
caller uid XXXX is different than the authenticator's uid
という形式である場合、少し誤解を招く可能性があります。このメッセージにある「認証子」はあなたの認証子クラスではなく、Androidがそのアカウントのタイプに登録されている認証子であると理解したものです。の中で行われるチェックは
AccountManagerService
の中で行われるチェックは次のようになります。
private void checkCallingUidAgainstAuthenticator(Account account) {
final int uid = Binder.getCallingUid();
if (account == null || !hasAuthenticatorUid(account.type, uid)) {
String msg = "caller uid " + uid + " is different than the authenticator's uid";
Log.w(TAG, msg);
throw new SecurityException(msg);
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "caller uid " + uid + " is the same as the authenticator's uid");
}
}
なお
hasAuthenticatorUid()
は
account.type
. ここで私は失敗してしまったのです。私は自分の
Account
を定数で指定された型で作成していました。
class LoginTask {
Account account = new Account(userId, AuthenticatorService.ACCOUNT_TYPE);
...
}
class AuthenticatorService extends Service {
public static final String ACCOUNT_TYPE = "com.joelapenna.foursquared";
...
}
という定数がありますが、この定数は私の認証機能のXML定義と一致しませんでした。
<account-authenticator xmlns:android="/web/20150729061818/http://schemas.android.com/apk/res/android"
android:accountType="com.joelapenna.foursquared.account" ... />
次に、私のようにサンプルを既存のアプリに埋め込んでテストしたい場合は、必ず
Constants
クラスではなく、このサンプルに含まれる
android.provider.SyncStateContract
パッケージの下にないクラスです。どちらのクラスも同じ属性名
ACCOUNT_TYPE
を作成するときに使用される
Account
オブジェクトを作成するときに使用されます。
関連
-
[解決済み] Android Fatal signal 11 (SIGSEGV) at 0x636f7d89 (code=1). どのように追跡することができますか?
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] サポートライブラリのアクションバーをPreferenceActivityに追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] アダプタからActivityメソッドを呼び出す