7

ここで少し問題があります。私がやりたいことは、PreferenceActivity 内からアクティビティを起動することです。したがって、設定レイアウトを保持する私のpreference.xmlは次のようになります。

<Preference android:title="Launch Activity" >
   <intent android:action="org.momo.SOME_ACTIVITY" />
</Preference>

マニフェストは、起動したいアクティビティを認識しています..

<activity android:label="@string/app_name" android:name="SomeActivity">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />

            <action android:name="org.momo.SOME_ACTIVITY" />
        </intent-filter>
    </activity>

起動しようとすると、セキュリティ例外 ( Permission Denial ) が発生します。何か不足していますか?インテントの理解はまだ少し不完全ですが、そのように機能するはずだと考えました。

助けてくれてありがとう!

4

3 に答える 3

20

インテント フィルターを作成することは、これを行うための少し遠回りのように思えます。これはより簡単なアプローチです。

<PreferenceScreen
    android:title="@string/settings.title" 
    android:summary="@string/settings.summary">
    <intent
        android:targetPackage="com.companyname.appname"
        android:targetClass="com.companyname.appname.classname"/>
</PreferenceScreen>
于 2011-08-01T11:15:17.820 に答える
2

完全に機能する例preference.xml

<Preference 
        android:title="@string/settings_title_notification_silent_mode"
        android:summary="@string/settings_title_notification_silent_mode_summary">
  <intent
   android:action="com.activity.SilentModeList"/> <!-- SilentModeList its activity -->
  </Preference>

あなたのmanifest.xmlで

      <activity android:name="com.activity.SilentModeList"
            android:label="@string/ac_settings_description">
           <intent-filter>
               <action android:name="com.activity.SilentModeList" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
      </activity>
于 2011-10-05T11:45:44.780 に答える
0

私の場合、すべてのxml設定は正しかった。

しかし、私が起動した (という名前のAppPreferences) アクティビティは、不適切なリフレクタリングのために次の場所に存在していました: [package].AppPreferencesand[[package].commmon.Preferences のため、import common._これをアクティビティと見なしていましたが、もちろん Android マニフェストでは宣言されていませんでした。コードから 2 番目のアクティビティを削除するだけで済みました。

于 2014-11-19T11:16:49.110 に答える