0

私は、ユーザーが電話でインストールした他の既存のアプリ (またはそれらをストアに誘導する) で起動できるアプリを作成することを検討しています。

これが FindPackagesForCurrentPublisher の目的であるように思えますが、動作させることができないようです。これをテストするために、「ハブ」アプリと 2 つの「ターゲット」アプリをインストールしました。FindPackages... は、予想される 3 つのアプリのリストを返します。

最も単純な例として、次のようなコードがあります。

var packages = InstallationManager.FindPackagesForCurrentPublisher();
// Real code verifies that I'm pointing to the app I want
var package = packages.First();
package.Launch(string.Empty);

ただし、常にエラーが発生するようです。

  • エミュレータで実行すると、AccessViolationException が発生します
  • 電話で実行している場合、アプリはシャットダウンするだけです (デバッガーが接続されていても)。
4

1 に答える 1

1

残念ながら、インストールされている他のパッケージに関する情報を取得できるように見えますが、Package.Launch() API へのアクセスは、Microsoft および/または Microsoft パートナーによって作成されたアプリに制限されています。

この問題を解決するために、元のアプリを更新して URI ハンドラーを登録し、WMAppManifest.xml に次のように記述しました。

<Extensions>
  <Protocol Name="myapphandler" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
</Extensions>

次に、それを起動するハブ アプリから、次の操作を実行できます。

var launcherTask = Launcher.LaunchUriAsync(new Uri("dominionpicker:DominionPickerLauncher")).AsTask();
launcherTask.Wait();
于 2016-01-26T19:21:15.547 に答える