2

NetworkStateChange をリッスンするようにバックグラウンド タスクを作成しましたが、問題なく動作します。

経由でプログラムを起動しようとしてい Windows.System.Launcher.LaunchUriAsyncますが、試行時に Access is denied 例外が発生します:

タスクのソースは次のとおりです。

namespace Tasks
{
    public sealed class Upload : IBackgroundTask
    {
        BackgroundTaskDeferral _deferral = null;
        private bool wifiConnected = false;

        public bool WiFiConnected
        {
            get
            {
                return wifiConnected;
            }
            set
            {
                if (value == wifiConnected)
                    return;

                wifiConnected = value;
            }
        }


        public void Run(IBackgroundTaskInstance taskInstance)
        {

            var InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
            WiFiConnected = InternetConnectionProfile != null;

            if (!WiFiConnected)
            {
                LaunchFlexCheck();
                return;
            }


            _deferral = taskInstance.GetDeferral();
            _deferral.Complete();
        }

        private async void LaunchFlexCheck()
        {
            Debug.WriteLine("BEFORE LaunchFlexCheck()");
            bool result = false;
            try
            {
                result = Windows.System.Launcher.LaunchUriAsync(new System.Uri("myapp:MainPage")).GetResults();
            }
            catch (Exception e)
            {
                result = false;
                Debug.WriteLine("LaunchFlexCheck exception:" +  e.Message );
            }

            Debug.WriteLine("LaunchFlexCheck succes:" + (result ? "true" : "false"));
            Debug.WriteLine("AFTER LaunchFlexCheck()");
        }

    }
}

そうすることは可能ですか?

4

1 に答える 1

3

バックグラウンド タスクからアプリケーションを起動するということは、ユーザーが行っている作業の途中で、要求していないアプリケーションを起動するために中断されることを意味します。これは、ユーザーが常に制御を維持しなければならないという Windows Phone の設計ガイドラインと完全に矛盾しています。そういうわけで、私はそれが不可能であると確信しています。

于 2014-11-06T11:33:41.677 に答える