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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

447閲覧

セーフモードでは起動できず異常終了するアプリ

mercurian-teto

総合スコア75

C#

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2017/12/25 08:59

Xamarin.Androidでのアプリ開発初心者です。
(android5.1.1を使用しています)
セーフモードでは起動できず異常終了もしくはセーフモードだと起動できないように
イメージ説明アプリに対して設計したいのですが、何か直接的なコードを使ったりコードを使って実装することで実現できませんか。
解凍よろしくお願いします。

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

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

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

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

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

Zuishin

2017/12/25 10:17

セーフモードで起動するアプリは作れるんですか?どうやって作ってます?
mercurian-teto

2017/12/25 12:11

セーフモードで起動できるアプリがhelloworld出すだけのアプリだったりgooglechrome、ゲームのアプリでもセーフモードで起動でも動くアプリがありました。offtimeというアプリはプリインストールにもかかわらず、セーフモードで常駐アプリとして起動しています。
mercurian-teto

2017/12/25 12:12

offtimeというアプリはプリインストールでないにもかかわらずセーフモードでも常駐アプリとして起動します。
Zuishin

2017/12/25 12:12

いや、「あなたが」作れるんですか?
Zuishin

2017/12/25 12:14

もし作れないのであれば、それが回答です。どうやって作るか?普通に作ってください。
Zuishin

2017/12/25 12:26

確認なのですが、セーフモードで起動するアプリではなく起動しないアプリを作りたいんですよね?
mercurian-teto

2017/12/26 09:30

起動しないアプリを作ろうとしています。試してみたらセーフモードで起動できないアプリがたくさんありましたが、hello world出すだけのファイルなど一部セーフモード起動できるアプリもあるのでいちよう質問しました。また、https://developer.xamarin.com/api/type/System.Windows.Forms.BootMode/にそれらしい関数を発見いたしました。しかしセーフモードで起動できないアプリはほとんどであるので、不要な質問だったかもしれません。回答ありがとうございました。
guest

回答1

0

ベストアンサー

直接的な回答にはなりませんが、参考情報としてAndroidのソースコードを読むと以下のクラスのdetectSafeModeでSafeModeか判定しています。
PhoneWindowManager.java

この処理は内部クラスなので呼び出すことはできないのですが、判定の処理を見ると以下のようになっています。

Java

1int menuState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_MENU); 2int sState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_S); 3int dpadState = mWindowManager.getDPadKeycodeState(KeyEvent.KEYCODE_DPAD_CENTER); 4int trackballState = mWindowManager.getTrackballScancodeState(RawInputEvent.BTN_MOUSE); 5mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0; 6

判定に使われている状態をAndroidSDKやNDKで用意されているAPIで検出できるのであれば判定できるはずです。

また、特殊なモードで使われたくないという意図での質問でしたら、Root化した端末かの判断も必要かもしれません。その場合はSafetyNetの機能があります。
こちらはXamarinでの対応が確認できます。

今回の質問は「C#」「Xamarin」のタグを使用されていますが、OSに近い機能については「Android」の質問として扱ってAndroidの有識者の目にとまるようにし、まずはAndroidのネイティブ言語でどのように対応するかを理解したのちに、Xamarinでの実装方法について検討したほうが良いと考えます。

投稿2017/12/28 17:19

nakasho_dev

総合スコア2655

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問