startActivity()とかsendBroadcast()とか使ったらこんなWarnログが出た
"Calling a method in the system process without a qualified user"
訳:おんみゃさんシステムプロセスなんじゃけぇ、資格を持つユーザえらびんしゃぃっ!
startService()についてはログは出ない模様。なんで?
んで、Frameworkをのぞいてみればこんなメソッドがいましたと。
public void startActivityAsUser(Intent intent, UserHandle user); public void sendBroadcastAsUser(Intent intent, UserHandle user); public ComponentName startServiceAsUser(Intent service, UserHandle user); public boolean stopServiceAsUser(Intent service, UserHandle user);確かにユーザ選べる引数が追加されている。
引数のUserHandleはこんな感じの呼べば良さそう
//端末の全ユーザ UserHandle.ALL //現在アクティブのユーザ UserHandle.CURRENT //現在アクティブのユーザ //ただし、呼び元がユーザープロセスだった場合security exception投げる(本当かは不明 UserHandle.CURRENT_OR_SELF // 端末のオーナー(primary/owner) */ UserHandle.OWNERCURRENT_OR_SELFはPhoneFallbackEventHandler.javaが、
カメラボタン長押下時にIntent.ACTION_CAMERA_BUTTONを飛ばすのに使ってる。
カメラだからセキュリティ周り関係あるだろうけど、
どういう用途なのかがわからない。
結論は、とりあえずhogeAsUser()メソッド使うってだけなんだけど、
なんで?って聞かれると4.2でマルチユーザ対応になったからゴニョゴニョとしか...
あんま深く追ってないから、このくらいしかわからんとです。
みんな頑張って
0 件のコメント:
コメントを投稿