1

アクティビティが開始された Android インテントを回復したいと思います。

API 19 (KitKat) でテストされた私のアクティビティには、主なインテントの他に、次のインテント フィルターとパラメーターがあります。

        android:alwaysRetainTaskState="false"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:screenOrientation="landscape"
        android:configChanges="orientation|keyboardHidden|screenSize">
         <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="file" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.svg" />
            <data android:host="*" />
        </intent-filter>

しかし、アクティビティの実行中に SVG ファイルを開くと、新しいインテントが処理されません。以下の組み合わせを試し、アクティビティを立ち上げ、

android:launchMode="singleTask"

android:launchMode="standard"

android:launchMode="singleTop"

次のパラメーターと組み合わせて、6 つの構成を作成します。

android:finishOnTaskLaunch="true" or "false"

しかしonNewIntent、アプリケーションで SVG を開いたときに呼び出される関数を作成するものはありません。代わりに、以前の状態が表示されます (onPause と onResume が期待どおりに呼び出され、代わりに onCreate が呼び出されます)。

私が見つけた唯一の回避策はfinish()、メソッド内から関数を呼び出してonPause()、アプリケーションを効果的に終了させることでした。昨年、ターゲットを変更する前に機能していたため、何が起こっているのかわかりません。

毎回呼び出しインテントにアクセスするために必要な構成は何ですか?

私の答えのない関連する質問:

  • このブログでは、「singleTop」を使用する必要があると説明していますが、私の場合は機能しません。
  • この SO の質問には答えがありません。
  • この有名な SO の質問は、インテントの設定について説明しています。しかし、私の場合、自分でインテントを作成するのではなく、Android が作成します。
4

1 に答える 1

2

今のところ、私のプログラムは問題なく動作し、希望どおりに SVG をロードしています。私の構成に関するいくつかのポイント(おそらく役立つかもしれません)

  • Android API 15 をターゲットにしています。19 であきらめました。
  • android:finishOnTaskLaunch="true"AndroidManifest.xml
  • メソッドfinish()で呼び出しませんonPause()
  • OnNewIntent呼び出されることはありませんがonCreate、新しいインテントを解析するメソッドが呼び出されます。
  • アクティビティ マニフェストの内容は次のとおりです。

    <activity
      android:name="com.example.mypackage"
      android:launchMode="singleTop"
      android:finishOnTaskLaunch="true"
      android:alwaysRetainTaskState="false"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
      android:screenOrientation="landscape"
      android:configChanges="orientation|keyboardHidden|screenSize">
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="file" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.svg" />
        <data android:host="*" />
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    
于 2014-10-04T09:48:22.527 に答える