2011.04.06 14:42
     
 
       private String[] getHomeScreens()
{
String[] homes;
PackageManager pm =  getPackageManager();          // PackageManager 생성
Intent homeIntent = new Intent(Intent.ACTION_MAIN);   // Action 값이 ACTION_MAIN
homeIntent.addCategory(Intent.CATEGORY_HOME);    // Category 값이 CATEGORY_HOME 
                
                //위 Intent의 조건을 만족시켜 주는 ResolveInfo 리스트를 구한다. 
List<ResolveInfo> homeApps = pm.queryIntentActivities(homeIntent, PackageManager.GET_ACTIVITIES);
homes = new String[homeApps.size()];
for(int i=0; i<homeApps.size(); i++)
{
ResolveInfo info = homeApps.get(i);
//구해진 ResolveInfo 를 통해서 PackageName을 가져온다.
homes[i] = info.activityInfo.packageName; 
}
return homes;
}
신고
Posted by 구름같은사나이
2011.04.04 17:04
           

 
                WifiManager wManager = (WifiManager)context.getSystemService(Activity.WIFI_SERVICE);

if(wManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED || 
wManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING )
{
wManager.setWifiEnabled(false);
}
else
{
wManager.setWifiEnabled(true);
}
신고
Posted by 구름같은사나이
2011.04.04 17:03
    
   
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    
    //현재 Bluetooth가 켜져 있는지, 혹은 켜는 중인지 확인 한다. 
if(adapter.getState() == BluetoothAdapter.STATE_TURNING_ON || 
    adapter.getState() == BluetoothAdapter.STATE_ON)     
{
adapter.disable();   // Bluetooth Off
}
else
{
           adapter.enable();     // Bluetooth On
}
신고
Posted by 구름같은사나이
2011.03.09 15:32
               락 스크린을 해지 시켜주는 코드 부분.


             KeyguardManager manager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);  
KeyguardLock lock = manager.newKeyguardLock(KEYGUARD_SERVICE);  
lock.disableKeyguard();  

               - 필요한 Permmision -

                <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
               
신고
Posted by 구름같은사나이
2011.03.09 14:41

진동상태의 핸드폰을 이와 같은 코드를 이용해서 가장 큰 벨음량으로 소리내게 할 수 있다.

...

AudioManager manager = (AudioManager)getSystemService(AUDIO_SERVICE);
int max = manager.getStreamMaxVolume(AudioManager.RINGER_MODE_NORMAL);
manager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
manager.setStreamVolume(AudioManager.STREAM_RING, max, AudioManager.FLAG_PLAY_SOUND);
mRing = RingtoneManager.getRingtone(this,RingtoneManager.getActualDefaultRingtoneUri
                                                                                       (this,RingtoneManager.TYPE_RINGTONE));
mRing.play();

...
신고
Posted by 구름같은사나이
2011.02.22 10:16

화면에 상대값으로 위젯을 배치하기위한 코딩법.

...

Display  display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

display.getWidth();
display.getHeight();

...
신고
Posted by 구름같은사나이
2010.11.23 11:41
...

InputMethodManager inputManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(mPwd.getWindowToken(),0);   //mPwd는 EditText의 변수 - 내리기

inputManager.showSoftInput(mPwd, 0); //올리기 단, mPwd에 Focus 가야 됨. ( mPwd.requestFocus(); )

...
신고
Posted by 구름같은사나이
2010.11.01 23:35

가끔 안드로이드 핸드폰의 Launcher 어플을 보다 보면, 다운로드 어플 및 시스템 어플에 대해 궁금해질 때가 있다. 어떻게 어플을 찾아 낼까 라는... 여기 아래와 같은 코드를 통해 받아오는 방법이 존재한다. ( Launcher 소스 참조 )

패키지 매니저의 queryIntentActivities 메소드를 이용하는 방법이다. queryIntentActivities 메소드는 인자로 들어가는 Intent에 대해 검색하여 해당되는 모든 Activity를 ResolveInfo 리스트로 돌려준다. 여기서는 ACTION_MAIN, CATEGORY_LAUNCHER를 이용한 모든 Activity를 검색하는 하는 것이다. 
리스트로 받은 ResolveInfo는 ActivityInfo를 ActivityInfo는 ApplicationInfo를 가진다. ( API 참조 )
이러한 방법을 통해서 Activity를 얻어 올수 있겠다. 


PackageManager  mPm = getPackageManager();   

Intent intent = new Intent(Intent.ACTION_MAIN);      
intent.addCategory(Intent.CATEGORY_LAUNCHER);

List<ResolveInfo> list = mPm.queryIntentActivities(intent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
ArrayList<ActivityInfo> tempList=new ArrayList<ActivityInfo>();
int count=list.size();
for(int i=0; i<count; i++)
{
ResolveInfo firstInfo = list.get(i);
   String packageName = firstInfo.activityInfo.applicationInfo.packageName;
 tempList.add(list.get(i).activityInfo);
}
신고
Posted by 구름같은사나이
2010.10.18 16:15


Activity 실행 시, EditText에 Focus가 가 있더라도, 혹은 requestFocus() 메소드를 실행 시켜 주어도 키보드가 자동으로 띄지 않는 경우가 있다. 이와 같은 경우, 아래와 같은 구현을 통해서 강제로 띄우기가 가능하다.

---------------------------------------------------------------------------------------------------------------------

private EditText mEditText;
....

new Handler().postDelayed(new Runnable(){
public void run(){
InputMethodManager input= (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
        input.showSoftInput((AutoCompleteTextView)findViewById(R.id.wc_search_txt_find),          
        input.SHOW_IMPLICIT);
inputManager.showSoftInput(mEditText, 0);
}
}, 100 );
신고
Posted by 구름같은사나이
2010.10.17 23:06

 
ActivityManager mActivityManager=(ActivityManager) getSystemService(ACTIVITY_SERVICE);
mActivityManager.restartPackage(String packageName);                  //2.1 version
mActivityManager.killBackgroundProcesses(String packageName);   //2.2 version

2.1 버전 상에서는 restartPackage 메소드를 이용하여 거의 완전한 어플리케이션을 종료 시킬수 있다. 
2.2 버전 상에서는 killBackgroundProcesses 메소드를 이용하여 불완전한 어플리키에션을 종료 시킬수 있다. (?)

2.2 버전 부터는 프로세스의 상태에 따라 중요하지 않은 프로세스만을 선별적으로 종료 시킨다. 

IMPORTANCE_EMPTY : 아무것도 없는 상황. 가장 낮음.
IMPORTANCE_BACKGROUND : 현재 동작하는 어플리케이션 컴포넌트가 없는 프로세스. 두 번째.
IMPORTANCE_SERVICE : 현재 서비스가 동작 중인 프로세스. 세 번째.
IMPORTANCE_VISIBLE : 화면상에 Activity가 동작하는 프로세스. 네 번째.
IMPORTANCE_FOREGROUND : 현재 사용자 UX와 지접 연관된 기능을 수행하는 프로세스. 가장 높음.

----------------------------------------------------------------------------------------------------------

직접 테스트 해 보았지만, 2.1상에서는 완전하게 종료하는 것을 볼 수 있는 반면, 2.2상에서는 종료가 되지 않았다. 
어디 다른 방법이 없는 것일까...


신고
Posted by 구름같은사나이

티스토리 툴바