2

私のプロジェクトには実行中のバックグラウンド サービス クラスがあります。サービスクラスは特定の操作を実行し、x 秒ごとに出力フラグ (True または False) を提供します。そのフラグに基づいて、「True」になるたびに、DevicePolicyManger (deviceManger) を呼び出して実行したいと考えています。

ただし、デバイスマネージャーが常に「Null」を返し、アプリがクラッシュするというエラーが発生しました。mainactivity クラスで DevicePolicyManger (deviceManger) を実行すると、正常に動作します。しかし、それは私の目標ではありません。フラグの出力に基づいて、実行中のサービス クラス内から DevicePolicyManger (deviceManger) を繰り返し呼び出す必要があります。

サービスコードはこちら

public class test extends Service{
 DevicePolicyManager deviceManger;
 ComponentName compName;
 public boolean active;
 Context mContext;
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();

    // perform service task here and output a boolean flag (True or False).

   if(flag == True){// I want to call devicemanger from here every time I get "True".
     
  deviceManger = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
  compName = new ComponentName(mContext, DeviceAdmin.class);
  System.out.println("deviceManger   " + deviceManger);

   Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, compName);
   intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "some text.");
   mContext.startActivity(intent);

   active = deviceManger.isAdminActive(compName);
   System.out.println("active   " + active);

  if (active) {
     deviceManger.lockNow();
           }
         }
       
      }
   }

誰でもこれで私を助けることができますか?

4

1 に答える 1