0

私は会社が提供するユーザーのモバイルの管理者であるため、ユーザーが設定を開くことを制限する必要があります。設定が開かれていることを検出するサービスを作成したいと考えています。しかし、サービス コードとマニフェスト xml で監視する必要があるインテントを見つけることができません。

例えば、

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_CHANGED);
this.registerReceiver(mBroadcastReceiver, filter);


<intent-filter>
            <action android:name="android.intent.action.TIMT_SET"/> 
</intent-filter>

上記は私がウェブで検索した例ですが、どのインテントがSETTINGSを表しているのかわかりません。

4

3 に答える 3

2

私は会社が提供するユーザーのモバイルの管理者であるため、ユーザーが設定を開くことを制限する必要があります。

設定アプリをロックダウンする Android OS の独自のカスタム ビルドを作成し、そのカスタム ビルドを独自のカスタム ROM mod にパッケージ化し、配布するデバイスにその ROM mod をインストールします。

于 2012-08-31T13:00:38.917 に答える
1

私は、両方に(欠点)利点がある 2 つの方法を知っています。

1)ユーザーがメニューを開いたときにアプリがバックグラウンドに移行しているかどうかを検出できます。ハンドラーは次のとおりです。

public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);

そこでは、すべてのシステム メニューを閉じることができます。デバイスを再起動またはオフにするメニューも含まれます。これは、次の意図で行われます。

Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);

2)フロントアプリを非常に頻繁に(1秒に2回など)チェックしているバックグラウンドワーカーでサービスの実行を開始できます。次のようにフォアグラウンド アプリを取得できます。

String packageName;
String className;
ActivityManager amen = (ActivityManager)getBaseContext().getSystemService(Activity.ACTIVITY_SERVICE);
packageName = amen.getRunningTasks(1).get(0).topActivity.getPackageName();
className = amen.getRunningTasks(1).get(0).topActivity.getClassName();

設定のパッケージ名はcom.android.settingsです。

それを検出した場合は、アプリをフォアグラウンドに戻すインテントを簡単に開始できます。

それが役に立てば幸い :)

于 2013-06-24T11:19:58.227 に答える
-1

Serviceシステムを読み取るために書き込みLogCatます。アプリケーションが起動すると、非常にユニークなログが表示されます。たとえば、これはGmailアプリケーションを起動したときのログです。

08-31 16:42:28.650: I/ActivityManager(3905): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.gm/.ConversationListActivityGmail bnds=[240,384][360,534]} from pid 7290

まあ、あなたの場合、cmp=if it equalscom.android.settingsを比較して、必要なことをしてください。

于 2012-08-31T09:44:47.383 に答える