私の好みのファイルで私はこれに行きます
<PreferenceCategory Android:title="Title" >
<Preference Android:title="title" >
<intent Android:action="com.my.package.MainActivity"
/>
</Preference>
</PreferenceCategory>
アクティビティはマニフェストファイルに作成されますが、それでも取得できます
Android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.my.package.MainActivity }
設定画面からアクティビティを開始するにはどうすればよいですか?
私は同じ問題を抱えていましたが、stackoverflowで検索したソリューションのどれも私のactivitynotfound例外を解決しませんでした。
これが私が見つけた実用的な解決策です ここ :
<PreferenceScreen
Android:title="@string/title_intent_preference"
Android:summary="@string/summary_intent_preference">
<intent Android:action="your.action.string"/>
</PreferenceScreen>
マニフェスト.xml内のアクティビティにインテントフィルターを設定します
<activity ...>
<intent-filter>
<action Android:name="your.action.string"/>
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
あなたのマニフェストで:
これは、[パッケージ] .MainActivityと呼ばれるアクティビティの定義です。
<activity Android:name=".MainActivity">
<intent-filter>
<action Android:name="example.action.ACTION_MAIN_ACTIVITY" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
また、PreferenceScreenを使用してみてください。
<PreferenceScreen Android:title="@string/my_location_settings">
<intent Android:action="example.action.ACTION_MAIN_ACTIVITY">
</intent>
</PreferenceScreen>
詳細については、このリンクを参照してください... preferences.xmlからアクティビティを開始します
これは、xmlからインテントを開始する正しい方法ではありません。 Android:action
フィールドは、開始しようとしているアクティビティの名前ではありません。別のアクティビティが提供できるインテントフィルタ(Android.intent.action.VIEW
やAndroid.intent.action.EDIT
など)のアクションについて説明します。
<intent
>、Android:actionなどの正しい使用法については、この回答を参照してください: https://stackoverflow.com/a/3751306/582004
AndroidManifest.xmlで、アクティビティに<intent-filter
>とPreferenceActivityで要求している<action
>が含まれていることを確認してください(参照されている回答では、これはAndroid.intent.action.VIEW
です)。
これを試して
<intent Android:targetPackage="your.package"
Android:targetClass="your.package.yourMainClassName"/>
プリファレンスxml内のインテント宣言で次のようなことを行う必要があります。
<intent Android:targetPackage="abc.def.efg"
Android:targetClass="abc.def.efg.hig.yourClassName"/>
注:targetPackage
は、AndroidManifest.xml
のpackage
タグ内で宣言されたmanifest
プロパティと同じである必要があります。これは時々混乱するので、もう一度読んでください。
したがって、同等のAndroidManifest.xml
には、次のような宣言があります。
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="abc.def.efg">
<application>
....
<activity Android:name=".hig.yourClassName"/>
</application>
</manifest>
設定画面からアクティビティを開始するには、次のように設定XMLを変更するだけです。
<Preference
app:key="your_key"
app:title="@string/title"
app:summary="@string/summary">
<intent
Android:targetPackage="your.package"
Android:targetClass="your.package.ActivityClass"/>
</Preference>
または、アクションを渡す必要がある場合は、アクション文字列を次のようなインテントプロパティ内に配置するだけです。
<Preference
app:key="your_key"
app:title="@string/title"
app:summary="@string/summary">
<intent
Android:targetPackage="your.package"
Android:targetClass="your.package.ActivityClass"
Android:action="your.package.ACTION"/>
</Preference>