Ich habe gerade das gleiche Problem beim Versuch, ein custom preference screen aus einem Bibliotheksprojekt für die AccountManager-Kontoeinstellungen zu verwenden. Egal, wie ich die targetPackage und targetClass-Attribute optimieren wollte, es würde eine Ausnahme auslösen (außer, da es ein Konto ist, stürzt das Telefon ab).
Ich denke, wir müssen nur davon ausgehen, dass dies eine Android-Beschränkung ist. Es ist ungeschickt, aber alles, was Sie wirklich tun müssen, ist eine Wrapper-Klasse für die Aktivität innerhalb Ihrer Anwendung Namespace deklarieren:
public class MyPreferences extends ActualPreferences {
}
es erklären in AndroidManifest.xml
<activity android:name=".MyPreferences"/>
Dann können Sie die Klasse angeben in Ihrer Absicht
<intent android:targetPackage="com.my.package"
android:targetClass="com.my.package.MyPreferences" />
By the way, ist die Syntax extrem pingelig, zumindest für Kontoeinstellungen. All diese Variationen fehlschlagen:
<!-- 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"/>
Der kritische Faktor ist offensichtlich, dass das android:targetPackage
Attribut entspricht das Anwendungspaket. Wenn Sie möchten, können Sie die Aktivität in ein Unterpaket einfügen. Das funktioniert:
<intent android:targetPackage="com.my.package"
android:targetClass="com.my.package.settings.MyPreferences" />
Ich weiß nicht, ob es möglich ist, ein nicht standardmäßiges Paket zu starten. Versuchen Sie es erneut mit einem "." vor der targetClass. wie android: targetClass = ". TheActivity" – Varun
Wo sehen Sie die verschachtelte '' Funktion dokumentiert? –
CommonsWare
Es sollte nicht dokumentiert werden, da es eine nicht unterstützte interne API ist. Die Anwendung wird möglicherweise abgelehnt, indem sie verwendet wird. – Pentium10