레이블이 Android인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Android인 게시물을 표시합니다. 모든 게시물 표시

2018년 8월 27일 월요일

모바일 자동화 tip - Android

appPackage, appActivity 찾기

  1. adb shell
  2. dumpsys window windows | grep -E ‘mCurrentFocus|mFocusedApp’
또는 adb logcat
실행 확인(cmd execution check)
:/> adb shell am start -n {appActivity}

디바이스 무선 연결
adb tcpip 5656
adb connect IP:5656
adb -s <device name> tcpip 5657 (2대 이상인 경우 device name 지정)

2013년 10월 14일 월요일

SpannableString 예제 (TextView의 글자 꾸미기)


String textString ="테스트문자열입니다"

SpannableString sText = new SpannableString(textString);
TextView text = ((TextView)findViewById(R.id.testtext));
sText.setSpan(new ForegroundColorSpan(Color.RED), 1, 3, 0);
sText.setSpan(new StyleSpan(Typeface.ITALIC), 2,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.append(sText);


출처 : http://comxp.tistory.com/114

2013년 1월 3일 목요일

Google Charts API를 이용한 QRCode 생성

private Bitmap makeQRCode(){
  String input = "http://m.naver.com";
  URL url;

  try{
    url = new URL("http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl=" 
    +  URLEncoder.encode(input, "UTF-8"));
    URLConnection conn = url.openConnection();
    conn.connect();
    InputStream is = conn.getInputStream();
    BufferedInputStream bis = new BufferedInputStream(is);
    Bitmap bmp = BitmapFactory.decodeStream(bis);
    bis.close();
    is.close();
  
    return bmp;
  }catch(Exception e){
    e.printStackTrace();
    return null;
  }
}
[Google chart api]

cht=qr
chs=<size>
chl=<text to encode>
choe=<output encoding>

2012년 11월 12일 월요일

현재 Activity 값 확인

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List Info = am.getRunningTasks(1);
ComponentName topActivity = Info.get(0).topActivity;
String topactivityname = topActivity.getPackageName();

2012년 5월 30일 수요일

AlertDialog에서 스타일 적용하기

ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.CenterTextView);
AlertDialog alertDialog = new AlertDialog.Builder(ctw).create();

2012년 5월 24일 목요일

AlertDialog 형식의 Activity Dialog 만들기


public class DialogActivity extends Activity {
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("알림");
        alertDialog.setMessage("Message");
alertDialog.setButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
finish();
}
});
alertDialog.setButton2("취소", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
finish();
}
});      
        alertDialog.show();
     
        alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener(){
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK ){
alertDialog.dismiss();
            finish();
}
return false;
}
        });      
    }
}

2012년 4월 27일 금요일

WebView no Cache


mWebView.clearCache(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

2012년 2월 22일 수요일

이중 스크롤뷰(ScrollView)의 scroll 컨트롤하기

Scroll View(A)안에 Scroll View(B)가 또 들어있을 경우(즉, A가 B를 포함한다), B 영역을 스크롤 하면 A 영역도 같이 스크롤 이벤트가 먹혀버리는 문제가 발생.

--> B의 onTouch 이벤트에서, A에 requestDisallowInterceptTouchEvent(true); 를 요청하자.


srcollViewB.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP)
            srcollViewA.requestDisallowInterceptTouchEvent(false);
        else
            srcollViewA.requestDisallowInterceptTouchEvent(true);

        return false;
});

출처 : http://posiraki.tistory.com/2

2011년 9월 23일 금요일

Gallery의 Image 무한 루프

public class HelloGallery extends Activity {
   
public final static int ADDED_EXTRA = 6;
public final static Integer[] mImageIds = {
            R.drawable.sample_1,
            R.drawable.sample_2,
            R.drawable.sample_3,
            R.drawable.sample_4,
            R.drawable.sample_5,
            R.drawable.sample_6,
            R.drawable.sample_7
    };
Gallery g;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        g = (Gallery) findViewById(R.id.gallery);
        g.setAdapter(new ImageAdapter(this));
        g.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
if (position < ADDED_EXTRA / 2)
g.setSelection(mImageIds.length + 2, false);
if (position > mImageIds.length + ADDED_EXTRA / 2) {
g.setSelection(4, false);
}
}

public void onNothingSelected(AdapterView<?> parent) {
g.setSelection(3, false);
}
        });
       
        g.setOnItemClickListener(new OnItemClickListener(){

public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
if (position < ADDED_EXTRA / 2) {
    position = mImageIds.length- (ADDED_EXTRA / 2 - position);
    } else if (position >= (mImageIds.length + (ADDED_EXTRA / 2))) {
    position = position - (mImageIds.length + (ADDED_EXTRA / 2));
    } else {
    position -= (ADDED_EXTRA / 2);
    }

Toast.makeText(HelloGallery.this, "position: " + position, Toast.LENGTH_SHORT).show();
}
        });
       
    }
    public class ImageAdapter extends BaseAdapter {
        int mGalleryItemBackground;
        private Context mContext;

        public ImageAdapter(Context c) {
            mContext = c;
//            TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
//            mGalleryItemBackground = a.getResourceId(
//                   R.styleable.Gallery1_android_galleryItemBackground, 0);
//            a.recycle();
        }

        public int getCount() {
            return mImageIds.length + ADDED_EXTRA;
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView i = new ImageView(mContext);
           
            if (position < ADDED_EXTRA / 2) {
    position = mImageIds.length- (ADDED_EXTRA / 2 - position);
    } else if (position >= (mImageIds.length + (ADDED_EXTRA / 2))) {
    position = position - (mImageIds.length + (ADDED_EXTRA / 2));
    } else {
    position -= (ADDED_EXTRA / 2);
    }
                     
            i.setImageResource(mImageIds[position]);
            i.setLayoutParams(new Gallery.LayoutParams(150, 100));
            i.setScaleType(ImageView.ScaleType.FIT_XY);
            i.setBackgroundResource(mGalleryItemBackground);
           
            return i;
        }
    }
}

2011년 9월 7일 수요일

어플리케이션 바로가기 아이콘 등록 및 해제

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />



public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.addCategory(Intent.CATEGORY_LAUNCHER);
shortcutIntent.setClassName(mContext, getClass().getName());
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortCutName);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(mContext, R.drawable.icon));
intent.putExtra("duplicate", false);
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(intent);

Toast.makeText(mContext, "Install shortcut", Toast.LENGTH_SHORT).show();
finish();
break;
case R.id.button2:
Intent shortcutUnIntent = new Intent(Intent.ACTION_MAIN);
shortcutUnIntent.addCategory(Intent.CATEGORY_LAUNCHER);
shortcutUnIntent.setClassName(mContext, getClass().getName());
shortcutUnIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

Intent i = new Intent();
i.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutUnIntent);
i.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortCutName);
i.putExtra("duplicate", false);
i.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
sendBroadcast(i);

Toast.makeText(mContext, "UnInstall shortcut", Toast.LENGTH_SHORT).show();
finish();
break;
}
}

2011년 8월 1일 월요일

Text Share

Intent it = new Intent(android.content.Intent.ACTION_SEND);
it.setType("text/plain");
it.putExtra(Intent.EXTRA_SUBJECT, "제목을 넣어요");
it.putExtra(Intent.EXTRA_TEXT, "내용을 넣어요");
startActivity(Intent.createChooser(it, "팝업창 타이틀을 넣어요"));

출처 : http://withsoju.tistory.com/542

2011년 7월 29일 금요일

Intent 활용 예시


// 웹페이지 띄우기
Uri uri = Uri.parse("http://www.google.com");
Intent it  = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
// 구글맵 띄우기 Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent it = new Intent(Intent.Action_VIEW,uri); startActivity(it);
// 구글 길찾기 띄우기 Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=출발지주소&daddr=도착지주소&hl=ko"); Intent it = new Intent(Intent.ACTION_VIEW,URI); startActivity(it);
// 전화 걸기 Uri uri = Uri.parse("tel:xxxxxx"); Intent it = new Intent(Intent.ACTION_DIAL, uri);   startActivity(it);  
Uri uri = Uri.parse("tel.xxxxxx"); Intent it = new Intent(Intent.ACTION_CALL,uri); // 퍼미션을 잊지 마세요. <uses-permission id="android.permission.CALL_PHONE" />
// SMS/MMS 발송 Intent it = new Intent(Intent.ACTION_VIEW);   it.putExtra("sms_body", "The SMS text");   it.setType("vnd.android-dir/mms-sms");   startActivity(it);  
// SMS 발송 Uri uri = Uri.parse("smsto:0800000123");   Intent it = new Intent(Intent.ACTION_SENDTO, uri);   it.putExtra("sms_body", "The SMS text");   startActivity(it);  
// MMS 발송 Uri uri = Uri.parse("content://media/external/images/media/23");   Intent it = new Intent(Intent.ACTION_SEND);   it.putExtra("sms_body", "some text");   it.putExtra(Intent.EXTRA_STREAM, uri);   it.setType("image/png");   startActivity(it);
// 이메일 발송 Uri uri = Uri.parse("mailto:xxx@abc.com"); Intent it = new Intent(Intent.ACTION_SENDTO, uri); startActivity(it);
Intent it = new Intent(Intent.ACTION_SEND);   it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");   it.putExtra(Intent.EXTRA_TEXT, "The email body text");   it.setType("text/plain");   startActivity(Intent.createChooser(it, "Choose Email Client"));  
Intent it = new Intent(Intent.ACTION_SEND);     String[] tos = {"me@abc.com"};     String[] ccs = {"you@abc.com"};     it.putExtra(Intent.EXTRA_EMAIL, tos);     it.putExtra(Intent.EXTRA_CC, ccs);     it.putExtra(Intent.EXTRA_TEXT, "The email body text");     it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");     it.setType("message/rfc822");     startActivity(Intent.createChooser(it, "Choose Email Client"));  
// extra 추가하기 Intent it = new Intent(Intent.ACTION_SEND);   it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");   sendIntent.setType("audio/mp3");   startActivity(Intent.createChooser(it, "Choose Email Client"));
// 미디어파일 플레이 하기 Intent it = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("file:///sdcard/song.mp3"); it.setDataAndType(uri, "audio/mp3"); startActivity(it);
Uri uri = Uri.withAppendedPath(   MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");   Intent it = new Intent(Intent.ACTION_VIEW, uri);   startActivity(it);  
// 설치 어플 제거 Uri uri = Uri.fromParts("package", strPackageName, null);   Intent it = new Intent(Intent.ACTION_DELETE, uri);   startActivity(it);
// APK파일을 통해 제거하기 Uri uninstallUri = Uri.fromParts("package", "xxx", null); returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
// APK파일 설치 Uri installUri = Uri.fromParts("package", "xxx", null); returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
// 음악 파일 재생 Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3"); returnIt = new Intent(Intent.ACTION_VIEW, playUri);
// 첨부파일을 추가하여 메일 보내기 Intent it = new Intent(Intent.ACTION_SEND);   it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");   sendIntent.setType("audio/mp3");   startActivity(Intent.createChooser(it, "Choose Email Client"));
// 마켓에서 어플리케이션 검색 Uri uri = Uri.parse("market://search?q=pname:pkg_name");  Intent it = new Intent(Intent.ACTION_VIEW, uri);   startActivity(it);  // 패키지명은 어플리케이션의 전체 패키지명을 입력해야 합니다.
// 마켓 어플리케이션 상세 화면 Uri uri = Uri.parse("market://details?id=어플리케이션아이디");  Intent it = new Intent(Intent.ACTION_VIEW, uri);   startActivity(it); // 아이디의 경우 마켓 퍼블리싱사이트의 어플을 선택후에 URL을 확인해보면 알 수 있습니다.
// 구글 검색 Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY,"searchString") startActivity(intent);
출처 : http://theeye.pe.kr/entry/a-tip-of-android-intent-with-simple-examples