Preference items and explicit intents

2019-09-21 23:38发布

我想打电话从偏好项活动

理想情况下,我想简单地指定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这种直接

这是可能的还是我找错了树?

Answer 1:

你可以这样做:

添加到您的偏好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打开它。



Answer 2:

我认为当前选择的答案是没有一个明确的意图,但是一个隐含的一个。
为了让一个明确的意图,

您的喜好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声明是正确的


Answer 3:

targetPackage和targetClass是你搜索的属性。

您可以使用此:

<intent
    android:action="android.intent.action.MAIN"
    android:targetPackage="com.example.package"
    android:targetClass="com.example.package.FileChooserActivity" />


文章来源: Preference items and explicit intents