안드로이드 개발 질문/답변
(글 수 45,052)
package kr.androtime;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.app.ActivityManager.RunningTaskInfo;
public class AndroTimeActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text1=(TextView)findViewById(R.id.TextView01);
RunningTaskInfo rti=new RunningTaskInfo();
String str;
try {
str=rti.topActivity.getPackageName();//요부분에서 문제가 발생하네요.
text1.setText(str);
} catch (Exception e) {
text1.setText(e.toString());
}
//text1.setText();
}
}
러닝테스크인포로 해서 getPackageName()을 읽어왔는데
textview에 뿌려주면
java.lang.NullPointerException 에러가 뜨네요.ㅠㅠ
어떻게 해야 현재 foreground를 읽어드릴수 있을지 궁금합니다.
감사합니다
공지사항을 다 읽었음
버전:2.0
2010.03.30 01:17:36
그냥 RunningTaskInfo를 직접 생성해줘서는 별의미 없어보이네요.
http://d.android.com/reference/android/app/ActivityManager.html 에서 가져와서 처리해야할듯 합니다.
2010.03.30 02:04:54
회색님의 답변 감사합니다.
좀더 요리조리 알아봐서 소스를 약간 고쳤는데
try{
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName topActivity=taskInfo.get(0).topActivity;
String str=topActivity.getPackageName();
}
catch(Exception e)
{
text1.setText(e.toString());
}
실행과 동시에 뿌려주는게 문제가 있을까 해서 버튼을 눌렀을때 위와 같이 작동하도록 했는데요.
그리고 소스도 약간 수정하였습니다.
그런데도 여전히 에러메시지를 뿜어대네요.ㅠㅠ..
java.lang.SecurityException: Permission Denial: getTasks() from pid=389, uid=10028 requires android.permission.GET_TASKS
라고 나오네요.ㅠㅠ
뭔가 방법이 없을까요?ㅠ_ㅠ
감사합니다.