我想打电话从偏好项活动
理想情况下,我想简单地指定XML中的一个明确意图为该首选项
但我的谷歌赋就离弃我,我只能找到隐含的意图,例如实例
<Preference android:title="@string/prefs_web_page" >
<intent android:action="android.intent.action.VIEW"
android:data="http://www.example.com" />
</Preference>
我已经打电话给我的活动编程elesewhere,如
Intent intent = new Intent(this, FileChooserActivity.class);
但我想打电话从XML这种直接
这是可能的还是我找错了树?
你可以这样做:
添加到您的偏好XML:
<Preference
android:key="TODO"
android:title="@string/TODO"
android:summary="@string/TODO">
<intent
android:action="com.example.test.pref.action"/>
</Preference>
而在你的清单中添加这从首开活动:
<activity android:name=".todo"
android:label="@string/todo">
<intent-filter>
<action android:name="com.example.test.pref.action" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
确保com.example.test.pref.action是独一无二的!
注意:如果您需要打开一个网站或者其Manifest条目不能编辑的任何活动,你需要从编程与意图的活动com.example.test.pref.action打开它。
我认为当前选择的答案是没有一个明确的意图,但是一个隐含的一个。
为了让一个明确的意图,
您的喜好XML应该是这样的(定义targetPackage和targetClass):
<Preference android:title="@string/preference_title__intent_act" >
<intent
android:targetPackage="com.mycompany.mypackage"
android:targetClass="com.mycompany.mypackage.IntentActivityFromPreferences" />
</Preference>
在AndroidManifest.xml您的活动的声明应该是这样的:
<manifest
...
package="com.mycompany.mypackage">
...
...
<activity
android:name="com.mycompany.mypackage.IntentActivityFromPreferences"
android:label="@string/activity_intentactivityfromprefs_name">
</activity>
</manifest>
笔记:
- “com.mycompany.mypackage”是在AndroidManifest.xml声明的根包
- 如果目标类是没有内部“com.mycompany.mypackage”,它也行,只要确保在AndroidManifest.xml声明是正确的
targetPackage和targetClass是你搜索的属性。
您可以使用此:
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.example.package"
android:targetClass="com.example.package.FileChooserActivity" />