ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드에서 오는 문자 메시지를 자동으로 텔레그램으로 보내는 간단한 앱을 만들기
    I.T 공부방 2024. 8. 12. 12:36
    반응형

    참고.쳇지피티


    ### **목표**
    안드로이드에서 오는 문자 메시지를 자동으로 텔레그램으로 보내는 간단한 앱을 만드는 것입니다.

    ### **1. 앱의 기본 개념**
    - **문자 메시지(SMS)를 감지**하는 기능을 앱에 넣고,
    - 감지된 문자 메시지를 **텔레그램**으로 보내는 기능을 추가합니다.

    ### **2. 단계별 구현**

    #### **A. 기본 앱 설정**

    1. **새로운 Android 프로젝트 만들기**
       - Android Studio를 열고 "New Project"를 선택하여 새 프로젝트를 생성합니다.
       - 프로젝트 이름을 정하고 최소 SDK를 설정한 후, 빈 액티비티(Empty Activity)를 선택합니다.

    2. **필요한 권한 추가**
       - `AndroidManifest.xml` 파일에서 앱이 문자 메시지를 감지할 수 있도록 `RECEIVE_SMS` 권한을 추가합니다.
       ```xml
       <uses-permission android:name="android.permission.RECEIVE_SMS"/>
       ```

    #### **B. 문자 메시지 감지하기**

    1. **BroadcastReceiver 클래스 만들기**
       - 문자 메시지를 받을 때 감지하는 코드를 작성해야 합니다. `SmsReceiver`라는 클래스를 만듭니다.

       ```java
       public class SmsReceiver extends BroadcastReceiver {
           @Override
           public void onReceive(Context context, Intent intent) {
               // 메시지를 감지하면 실행되는 코드
               Bundle bundle = intent.getExtras();
               if (bundle != null) {
                   // 문자 메시지를 추출하는 코드
                   Object[] pdus = (Object[]) bundle.get("pdus");
                   for (Object pdu : pdus) {
                       SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
                       String sender = smsMessage.getDisplayOriginatingAddress();  // 발신자 번호
                       String messageBody = smsMessage.getMessageBody();  // 메시지 내용

                       // 메시지를 로그로 출력해 보기
                       Log.d("SmsReceiver", "From: " + sender + ", Message: " + messageBody);
                   }
               }
           }
       }
       ```

    2. **Receiver 등록하기**
       - `AndroidManifest.xml`에 `SmsReceiver`를 등록합니다.

       ```xml
       <receiver android:name=".SmsReceiver">
           <intent-filter>
               <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
           </intent-filter>
       </receiver>
       ```

    #### **C. 텔레그램으로 메시지 보내기**

    1. **텔레그램 봇 생성**
       - 텔레그램에서 `@BotFather`를 찾아가서 새 봇을 생성합니다.
       - 봇을 생성하고 `API 토큰`을 받습니다.

    2. **메시지를 텔레그램으로 보내는 코드 추가**
       - 문자 메시지를 수신한 후, 이를 텔레그램으로 보내는 코드를 추가합니다.
      
       ```java
       private void sendToTelegram(String sender, String message) {
           String apiToken = "YOUR_BOT_API_TOKEN";
           String chatId = "YOUR_CHAT_ID";
           String text = "From: " + sender + "\nMessage: " + message;

           String urlString = "https://api.telegram.org/bot" + apiToken + "/sendMessage?chat_id=" + chatId + "&text=" + text;

           new Thread(new Runnable() {
               @Override
               public void run() {
                   try {
                       URL url = new URL(urlString);
                       HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                       conn.setRequestMethod("GET");
                       conn.getResponseCode();
                       conn.disconnect();
                   } catch (Exception e) {
                       e.printStackTrace();
                   }
               }
           }).start();
       }
       ```

    3. **텔레그램 메시지 전송 기능 연결**
       - 문자 메시지가 감지되면 자동으로 `sendToTelegram` 메서드가 호출되도록 합니다.

       ```java
       public class SmsReceiver extends BroadcastReceiver {
           @Override
           public void onReceive(Context context, Intent intent) {
               Bundle bundle = intent.getExtras();
               if (bundle != null) {
                   Object[] pdus = (Object[]) bundle.get("pdus");
                   for (Object pdu : pdus) {
                       SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
                       String sender = smsMessage.getDisplayOriginatingAddress();
                       String messageBody = smsMessage.getMessageBody();

                       // 문자 메시지를 텔레그램으로 전송
                       sendToTelegram(sender, messageBody);
                   }
               }
           }

           private void sendToTelegram(String sender, String message) {
               // 위에서 설명한 코드
           }
       }
       ```

    ### **3. 앱 테스트하기**
    - 앱을 설치한 후 문자 메시지를 보내고, 텔레그램에서 해당 메시지가 전송되는지 확인해봅니다.

    ### **4. 다음 단계**
    - 처음에는 복잡하게 느껴질 수 있지만, 위의 코드와 설명을 하나씩 따라 해 보세요. 만약 어느 부분이 어려운지 알려주시면, 더 자세히 설명해 드리겠습니다.

    이렇게 간단한 앱을 만들어 보면서 Android와 텔레그램 API 사용에 익숙해질 수 있을 것입니다.

    반응형

    'I.T 공부방' 카테고리의 다른 글

    GIS 플랫폼 활용법: 공간 데이터 분석과 시각화  (14) 2024.09.22
    리눅스 기초용어 50  (1) 2024.08.04
Designed by Tistory.