質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

739閲覧

UWPのスタート画面ピン留めをアプリ内で実行した時、ピン留めされていない状態ではアプリが実行されない

hirotamasami

総合スコア5

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/02/10 01:21

前提・実現したいこと

UWPのスタート画面へのピン留めについてですが、
以下のように、
Appクラスに定義しました。

C#

1 public async Task StartPinned(string uriString150_150, string uriString310_150, string uriString310_310) 2 { 3 string appName = "TestStartPinned"; 4 int zipCode = 0; 5 6 string tileId = appName + zipCode; 7 8 string displayName = appName; 9 10 string arguments = "action=viewCity&zipCode=" + zipCode; 11 12 SecondaryTile tile = new SecondaryTile( 13 tileId, 14 displayName, 15 arguments, 16 new Uri(uriString150_150), 17 TileSize.Default); 18 19 tile.VisualElements.Wide310x150Logo = new Uri(uriString310_150); 20 tile.VisualElements.Square310x310Logo = new Uri(uriString310_310); 21 22 bool isPinned = SecondaryTile.Exists(tileId); 23 if (!isPinned) 24 { 25 bool isPinned2 = await tile.RequestCreateAsync(); 26 } 27 28 } 29 30 /// <summary> 31 /// アプリケーションがエンド ユーザーによって正常に起動されたときに呼び出されます。他のエントリ ポイントは、 32 /// アプリケーションが特定のファイルを開くために起動されたときなどに使用されます。 33 /// </summary> 34 /// <param name="e">起動の要求とプロセスの詳細を表示します。</param> 35 protected async override void OnLaunched(LaunchActivatedEventArgs e) 36 { 37 Frame rootFrame = Window.Current.Content as Frame; 38 39 // ウィンドウに既にコンテンツが表示されている場合は、アプリケーションの初期化を繰り返さずに、 40 // ウィンドウがアクティブであることだけを確認してください 41 if (rootFrame == null) 42 { 43 // ナビゲーション コンテキストとして動作するフレームを作成し、最初のページに移動します 44 rootFrame = new Frame(); 45 46 rootFrame.NavigationFailed += OnNavigationFailed; 47 48 if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 49 { 50 //TODO: 以前中断したアプリケーションから状態を読み込みます 51 } 52 53 // フレームを現在のウィンドウに配置します 54 Window.Current.Content = rootFrame; 55 } 56 57 if (e.PrelaunchActivated == false) 58 { 59 if (rootFrame.Content == null) 60 { 61 await StartPinned( 62 "ms-appx:///Assets/Square150x150Logo.png" 63 , "ms-appx:///Assets/Wide310x150Logo.png" 64 , "ms-appx:///Assets/Square310x310Logo.png" 65 ); 66 67 // ナビゲーションの履歴スタックが復元されていない場合、最初のページに移動します。 68 // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを 69 // 作成します 70 rootFrame.Navigate(typeof(MainPage), e.Arguments); 71 } 72 // 現在のウィンドウがアクティブであることを確認します 73 Window.Current.Activate(); 74 } 75 }

このようにすれば、
アプリ起動時に
スタートにピン留めされていない場合、
"このタイルをスタートにピン留めしますか?"
はい or いいえでメッセージボックスが表示され、
はいを選択すると
スタートにピン留めされます。
ここでいいえを選択するとピン留めされずにアプリが起動するのですが、
アプリを終了し、
もう一度アプリを起動(スタートにはピン留めされていないので別の場所から)しようとすると、
最初の画面(スプラッシュ画面?)の状態のままになり、
メイン画面に切り替わりません。
この現象ははいを選択後、
スタートのピン留めを外して別の場所からアプリを起動した際も発生しました。

なにが起こっているのでしょうか?
またどうすれば改善することができるでしょうか?

情報不足ありましたら
ご指摘ください。
宜しくお願い致します。

確認できた現象

・OnLaunchedが実行されない
OnLaunchedの一番最初に

C#

1 protected async override void OnLaunched(LaunchActivatedEventArgs e) 2 { 3 await new MessageDialog($"{nameof(OnLaunched)} Start").ShowAsync();

を追加し、MessageDialogが表示されるようにしてみたところ、
ダイアログは表示されませんでしたので、
おそらくOnLaunchedも実行されていません。

・一定時間経過後に終了?
とりあえず最初の画面のままの状態でしばらく放置してみましたが、
一定時間?経過後にアプリは終了しました。

補足情報(FW/ツールのバージョンなど)

・OS バージョン Windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

最初の画面(スプラッシュ画面?)の状態のままになり、メイン画面に切り替わりません。

この時点で既に例外が発生していたりはしませんか?
例外処理、ログ出力処理等を組み込んでみて、どこまで処理が正常に流れているか、例外が発生しているならその内容を出力したりして、不具合の発生している箇所と原因を調査してみてはどうでしょう。
イベントビューアーのWindowsログ辺りにも何か残っているかもしれません。

投稿2021/02/10 02:20

編集2021/02/10 02:30
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirotamasami

2021/02/10 02:37

ご回答ありがとうございます。 かしこまりました。 確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問