AccountManager アカウント設定のライブラリ プロジェクトからカスタム設定画面を使用しようとしたときに、同じ問題に遭遇しました。targetPackage および targetClass 属性をどのように調整しようとしても、例外がスローされます (ただし、これはアカウントであるため、電話がクラッシュします)。
これは Android の制限であると想定する必要があると思います。不器用ですが、実際に行う必要があるのは、アプリケーションの名前空間内でアクティビティのラッパー クラスを宣言することだけです。
public class MyPreferences extends ActualPreferences {
}
AndroidManifest.xml で宣言します
<activity android:name=".MyPreferences"/>
次に、インテントでクラスを指定できます
<intent android:targetPackage="com.my.package"
android:targetClass="com.my.package.MyPreferences" />
ちなみに、少なくともアカウント設定に関しては、構文は非常に面倒です。これらのバリエーションはすべて失敗します。
<!-- fails --> <intent android:targetClass="com.my.package.MyPreferences" />
<!-- fails --> <intent android:targetClass="MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass=".MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass="settings.MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass=".settings.MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass="com.my.other.package.MyPreferences"
android:targetPackage="com.my.package"/>
重要な要素は明らかに、android:targetPackage
属性がアプリケーション パッケージと一致することです。必要に応じて、アクティビティをサブパッケージに入れることができます。これは機能します:
<intent android:targetPackage="com.my.package"
android:targetClass="com.my.package.settings.MyPreferences" />