startActivityの際に警告でandroid.permission.GET_TASKSが要求される

1,573 views
Skip to first unread message

チョンボ

unread,
Feb 25, 2013, 1:30:48 AM2/25/13
to android-g...@googlegroups.com
お世話になっております。

ActivityからActivityに遷移する時に明示的インテントを行って処理をしているのですが、
startActivityでGET_TASKSが要求されてしまいます。

無駄なパーミッションを省きたいのですが、マニフェストに
 android:exported="true"にしても効果はなくどうしていいものか悩んでいます。

どなたか解決方法をご存知の方はいらっしゃいますでしょうか?

MORIHIRO

unread,
Feb 25, 2013, 5:21:11 AM2/25/13
to android-g...@googlegroups.com
記載内容から判断すると、呼び出されるAcrivity側でGET_TASKSが
必要なメソッドを呼び出しているだけのように読めるんですけど、
本当に「無駄なパーミッション」なんでしょうか?


2013年2月25日月曜日 15時30分48秒 UTC+9 チョンボ:

チョンボ

unread,
Feb 25, 2013, 8:59:05 PM2/25/13
to android-g...@googlegroups.com


2013年2月25日月曜日 19時21分11秒 UTC+9 MORIHIRO:
記載内容から判断すると、呼び出されるAcrivity側でGET_TASKSが
必要なメソッドを呼び出しているだけのように読めるんですけど、
本当に「無駄なパーミッション」なんでしょうか?


MORIHIRO様 
返信ありがとうございます。
GET_TASKSが必要な処理の場合そこを対象にログが出ると思うのですが、startActivityの箇所のみでログがでている状況です。
以下にログを掲載致しました。 
02-26 10:51:20.775: W/System.err(2208): java.lang.SecurityException: Permission Denial: getTasks() from pid=2208, uid=10152 requires android.permission.GET_TASKS
02-26 10:51:20.775: W/System.err(2208): at android.os.Parcel.readException(Parcel.java:1322)
02-26 10:51:20.775: W/System.err(2208): at android.os.Parcel.readException(Parcel.java:1276)
02-26 10:51:20.775: W/System.err(2208): at android.app.ActivityManagerProxy.getTasks(ActivityManagerNative.java:1754)
02-26 10:51:20.775: W/System.err(2208): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1379)
02-26 10:51:20.775: W/System.err(2208): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1377)
02-26 10:51:20.775: W/System.err(2208): at android.app.Activity.startActivityForResult(Activity.java:2849)
02-26 10:51:20.775: W/System.err(2208): at android.app.Activity.startActivity(Activity.java:2975)
02-26 10:51:20.775: W/System.err(2208): at 呼び出し元アクティビティ$1.onClick(LoginActivity.java:68)//ここでパーミッション要求が出ているように思います。
02-26 10:51:20.775: W/System.err(2208): at android.view.View.performClick(View.java:2585)
02-26 10:51:20.775: W/System.err(2208): at android.view.View$PerformClick.run(View.java:9299)
02-26 10:51:20.775: W/System.err(2208): at android.os.Handler.handleCallback(Handler.java:587)
02-26 10:51:20.775: W/System.err(2208): at android.os.Handler.dispatchMessage(Handler.java:92)
02-26 10:51:20.775: W/System.err(2208): at android.os.Looper.loop(Looper.java:130)
02-26 10:51:20.775: W/System.err(2208): at android.app.ActivityThread.main(ActivityThread.java:3691)
02-26 10:51:20.775: W/System.err(2208): at java.lang.reflect.Method.invokeNative(Native Method)
02-26 10:51:20.775: W/System.err(2208): at java.lang.reflect.Method.invoke(Method.java:507)
02-26 10:51:20.775: W/System.err(2208): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
02-26 10:51:20.775: W/System.err(2208): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
02-26 10:51:20.775: W/System.err(2208): at dalvik.system.NativeStart.main(Native Method)


 

Hirokazu Fukami

unread,
Feb 25, 2013, 9:05:45 PM2/25/13
to android-g...@googlegroups.com
こんにちはfkmです。

startActivity()に渡しているIntentを組み立てている部分のコードは
どのようになっていますか?

2013/2/26 チョンボ <chonbo...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

MORIHIRO

unread,
Feb 25, 2013, 10:28:24 PM2/25/13
to android-g...@googlegroups.com
このアプリがタスク切り替えアプリ(呼び出し先は別タスクのActivity?)とかなら
GET_TASKSが必要なパーミッションのような気がしますが、そうでないなら、
Intent.FLAG_ACTIVITY_NEW_TASK の指定が漏れているんじゃないでしょうか。

2013年2月26日火曜日 10時59分05秒 UTC+9 チョンボ:

チョンボ

unread,
Feb 25, 2013, 11:36:17 PM2/25/13
to android-g...@googlegroups.com


2013年2月26日火曜日 11時05分45秒 UTC+9 fkm:
こんにちはfkmです。

startActivity()に渡しているIntentを組み立てている部分のコードは
どのようになっていますか?

fkm様
 返信ありがとうございます。
 コードは
 Intent intent=new Intent(呼び出し元Activity.this,呼び出し先Activity.class);

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

 startActivity(intent); 

 となっております。

チョンボ

unread,
Feb 25, 2013, 11:39:51 PM2/25/13
to android-g...@googlegroups.com


2013年2月26日火曜日 12時28分24秒 UTC+9 MORIHIRO:
このアプリがタスク切り替えアプリ(呼び出し先は別タスクのActivity?)とかなら
GET_TASKSが必要なパーミッションのような気がしますが、そうでないなら、
Intent.FLAG_ACTIVITY_NEW_TASK の指定が漏れているんじゃないでしょうか。

MORIHIRO様
 返信ありがとうございます。
 
 コードは
    Intent intent=new Intent(LoginActivity.this,Setting.class);

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    startActivity(intent);

 となっておりフラグの設定は行っております。

    Activityの起動構成をもう一度確認してみます。

チョンボ

unread,
Feb 26, 2013, 1:41:43 AM2/26/13
to android-g...@googlegroups.com
追記申し訳ありません。
前回のコードの下でfinish()を呼んでるのが問題なのでしょうか?
バックボタン等で前回のアクティビティを破棄したいのでstartActivity()の下で、
finish()をしています。
Intent intent=new Intent(LoginActivity.this,Setting.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

finish();

ssももんが

unread,
Feb 28, 2013, 10:10:05 AM2/28/13
to android-g...@googlegroups.com
ももんがです。
既に解決してしまっているかも知れませんが。

私が作成しているアプリで標記パーミッションを付与しています。
確か、下記コードの箇所で必要だったと記憶しています。
作成されているアプリの中で、以下のようなコーディングをされているのではないでしょうか?

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

List<RecentTaskInfo> recentTaskList;

recentTaskList = am.getRecentTasks(16, 0);



2013年2月26日 15:41 チョンボ <chonbo...@gmail.com>:

--

チョンボ

unread,
Feb 28, 2013, 8:12:36 PM2/28/13
to android-g...@googlegroups.com
ももんが様
返信ありがとうございます。

現在まだ奮闘中でした。
コードの方ですが、ActivityManagerなどを使っておらず、タスクの取得などを行っていないにも関わらず出てしまうので
現在も未解決です。
Intent intent=new Intent(LoginActivity.this,Setting.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

と前回の追記のコードからfinish()を消してもGET_TASKを要求されてしまいます。

同じActivityスタックで実行されているのでGET_TASKSが必要な理由がまだ分かっておりません。

ご意見ありがとうございました。今後の参考にさせていただきます。

 
 

Makoto Yamazaki

unread,
Feb 28, 2013, 10:44:13 PM2/28/13
to android-g...@googlegroups.com
zaki です。

再現できる最小のコードを Activity のクラスだけでいいのでもらえないでしょうか。

2013/3/1 チョンボ <chonbo...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
YAMAZAKI Makoto

MORIHIRO

unread,
Feb 28, 2013, 11:04:10 PM2/28/13
to android-g...@googlegroups.com
推測というか妄想レベルの話ですけど、
メーカーが省電力対応とかで startActivity() に細工をしていて
そこにバグがあったとか、、、なんてことはないですかねぇ。
→ emulatorや他の端末でも発生するんでしょうか?

呼び出し先が "Setting.class" ではなく "HelloActivity.class"
だったら発生しなくなるとか。

以下は回避策とかは不明ですが類似した現象の情報です。
 http://levelupstudio.com/betatest/index.php?topic=152.msg746#msg746

2013年3月1日金曜日 10時12分36秒 UTC+9 チョンボ:

チョンボ

unread,
Mar 1, 2013, 12:11:32 AM3/1/13
to android-g...@googlegroups.com

YAMAZAKI様

返信ありがとうございます。

最小構成がこちらです。

public class TestActivity extends Activity {

Button login;

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.login_activity);

login=(Button)findViewById(R.id.login);

}

public void onResume(){

super.onResume();

login.setOnClickListener(new OnClickListener(){


@Override

public void onClick(View v) {

// TODO 自動生成されたメソッド・スタブ

Intent intent=new Intent(LoginActivity.this,Setting.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

finish();

}

});

}

public void onPause(){

super.onPause();

}

}


宜しくお願い致します。

チョンボ

unread,
Mar 1, 2013, 12:36:49 AM3/1/13
to android-g...@googlegroups.com
MORIHIRO様
返信ありがとうございます。

今実験してみたところ別Activityを新たに作成しIntentした場合は同じ起動構成でもGET_TASKSは要求されず、
エミュレータでも警告の出た同じ起動構成で行ったのですが、GET_TASKSは要求されませんでした。

となるとMORIHIRO様がおっしゃるようにstartActivityにバグがあるのでしょうか・・・・・
ちなみに端末はGalaxy SC-03Dをつかっております。OSは2.3.6 です。

MORIHIRO

unread,
Mar 1, 2013, 1:06:09 AM3/1/13
to android-g...@googlegroups.com
類似情報の方も Galaxy Note(2.3.6) なので、
その世代のsamsung特有の何かがあるのかもしれませんね。

まぁ、クラス名を差し替えるだけで問題が解消するようであれば、
あまり深入りせずスルーしてしまってもいいと思います。

2013年3月1日金曜日 14時36分49秒 UTC+9 チョンボ:

Makoto Yamazaki

unread,
Mar 1, 2013, 1:17:10 AM3/1/13
to android-g...@googlegroups.com
zaki です。

import 文はどうなってますか?

2013/3/1 チョンボ <chonbo...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages