Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

BroadcastReceiver, куда добавить код? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как локализовать массив заголовков? http://www.cyberforum.ru/android-dev/thread1692337.html
Есть массив заголовков на русском языке созданный программно в java. Нужно его перевести на английский язык. Через Stringовые ресурсы не получается. В программировании нуб. Помогите разобраться ...
Программирование Android Поворот View Всем привет! Проблема такая: пишу приложение для планирования помещения. Есть RelativeLayout, на него программно добавляю imageView, задаю background и.т.п. И вот не плохо бы какой нибудь диван,... http://www.cyberforum.ru/android-dev/thread1692247.html
При любой ориентации экрана табы были всегда под ActionBar Программирование Android
Уважаемые программисты! Подскажите, пожалуйста как можно сделать так, чтобы табы были всегда под ActionBar? Есть Activity с ActionBar в котором навигация осуществляется при помощи табов. В...
Html разметка Программирование Android
Можно ли при помощи Java как то создать html файл и заполнить его содержимое определенной html разметкой, которую затем можно запустить просто в браузере(то есть не вручную а программно набрать html...
Программирование Android Картинки в ExpandableListView http://www.cyberforum.ru/android-dev/thread1692064.html
Как переделать адаптер, чтобы в ExpandableListView в child элементах находились определённые картинки? В идеале конечно ловить название пункта и выводить соответствующую ему картинку... Код...
Программирование Android MediaCodec - декодирование сжатого звука Здравствуйте, уважаемые форумчане. Пытаюсь при помощи MediaCodec из сжатых звуковых файлов формата MPEG Layer-3 получить исходные звуковые сэмплы. //Фреймы из mp3-файла достаю при помощи... подробнее

Показать сообщение отдельно
serjufa1
1 / 1 / 0
Регистрация: 15.10.2007
Сообщений: 75

BroadcastReceiver, куда добавить код? - Программирование Android

23.03.2016, 08:41. Просмотров 346. Ответов 6
Метки (Все метки)

помогите понять часть статьи https://habrahabr.ru/post/234425/.
добрался до Для работы BroadcastReceiver'а надо добавить немного кода в onCreate() или подобный метод вашего класса:
Java
1
2
3
IntentFilter mFilter = new IntentFilter("REFRESH");
mContext.registerReceiver(mMessageReceiver, mFilter);
isRegistered = true;
и завис. непонятно , куда вставлять данный код - если в новый класс, то как. ведь никакая форма не создается.

вот исходники
activity_main.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
 
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Complete the fields to send a sms" />
 
    <EditText
        android:id="@+id/phoneNumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="ex: 1234567890"
        android:inputType="phone" />
 
    <EditText
        android:id="@+id/smsBody"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Write your sms here...." />
 
    <Button
        android:id="@+id/smsManager"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send the sms by SmsManager" />
 
    <Button
        android:id="@+id/smsSIntent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send the sms by SENDTO" />
 
    <Button
        android:id="@+id/smsVIntent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send the sms by VIEW" />
 
    <Button
        android:id="@+id/btnUSSD1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="*100*1#" />
 
    <Button
        android:id="@+id/btnUSSD2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="*152*1#" />
 
 
</LinearLayout>
AndroidManifest.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.smssend"
    android:versionCode="1"
    android:versionName="1.0">
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />
 
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
 
    <service
        android:name=".USSDService"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>
    </service>
 
    <application
 
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
 
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
MainActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.example.smssend;
 
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
    private EditText phoneNumber;
    private EditText smsBody;
    private Button smsManagerBtn;
    private Button smsSendToBtn;
    private Button smsViewBtn;
 
    // [url]https://habrahabr.ru/post/234425/[/url]
    private Button smsbtnUSSD1;
    private Button smsbtnUSSD2;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        phoneNumber = (EditText) findViewById(R.id.phoneNumber);
        smsBody = (EditText) findViewById(R.id.smsBody);
        smsManagerBtn = (Button) findViewById(R.id.smsManager);
        smsSendToBtn = (Button) findViewById(R.id.smsSIntent);
        smsViewBtn = (Button) findViewById(R.id.smsVIntent);
        // [url]https://habrahabr.ru/post/234425/[/url]
        smsbtnUSSD1 = (Button) findViewById(R.id.btnUSSD1);
        smsbtnUSSD2 = (Button) findViewById(R.id.btnUSSD2);
 
 
        // запрос по кнопке *100#
        smsbtnUSSD1.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                String encodedHash = Uri.encode("#");
                String ussd = "*100" + encodedHash;
                startActivityForResult(new Intent("android.intent.action.CALL",
                        Uri.parse("tel:" + ussd)), 1);
                ;
            }
        });
 
        // запрос по кнопке *152*1#
        smsbtnUSSD2.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                String encodedHash = Uri.encode("#");
                String ussd = "*152*1" + encodedHash;
                startActivityForResult(new Intent("android.intent.action.CALL",
                        Uri.parse("tel:" + ussd)), 1);
                ;
            }
        });
 
 
        smsManagerBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                sendSmsByManager();
            }
        });
 
        smsSendToBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                sendSmsBySIntent();
            }
        });
 
        smsViewBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                sendSmsByVIntent();
            }
        });
    }
 
    public void sendSmsByManager() {
        try {
            // Get the default instance of the SmsManager
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(phoneNumber.getText().toString(),
                    null,
                    smsBody.getText().toString(),
                    null,
                    null);
            Toast.makeText(getApplicationContext(), "Your sms has successfully sent!",
                    Toast.LENGTH_LONG).show();
        } catch (Exception ex) {
            Toast.makeText(getApplicationContext(), "Your sms has failed...",
                    Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }
    }
 
    public void sendSmsBySIntent() {
        // add the phone number in the data
        Uri uri = Uri.parse("smsto:" + phoneNumber.getText().toString());
        Intent smsSIntent = new Intent(Intent.ACTION_SENDTO, uri);
        // add the message at the sms_body extra field
        smsSIntent.putExtra("sms_body", smsBody.getText().toString());
        try {
            startActivity(smsSIntent);
        } catch (Exception ex) {
            Toast.makeText(MainActivity.this, "Your sms has failed...",
                    Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }
    }
 
 
    public void sendSmsByVIntent() {
        Intent smsVIntent = new Intent(Intent.ACTION_VIEW);
        // prompts only sms-mms clients
        smsVIntent.setType("vnd.android-dir/mms-sms");
        // extra fields for number and message respectively
        smsVIntent.putExtra("address", phoneNumber.getText().toString());
        smsVIntent.putExtra("sms_body", smsBody.getText().toString());
        try {
            startActivity(smsVIntent);
        } catch (Exception ex) {
            Toast.makeText(MainActivity.this, "Your sms has failed...",
                    Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }
    }
 
}
USSDService.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.example.smssend;
 
/**
 * Created by Администратор on 22.03.2016.
 */
import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;
 
public class USSDService extends AccessibilityService {
 
    static final String TAG = "RecorderService";
 
 
 
 
 
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String message = intent.getStringExtra("message");
            Log.i("receiver", "Got message: " + message);
            Toast toast = Toast.makeText(getApplicationContext(),
                    message, Toast.LENGTH_SHORT);
            toast.show();
            //showText(message);
        }
 
 
    };
 
    private String getEventType(AccessibilityEvent event) {
        switch (event.getEventType()) {
            case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
                return "TYPE_NOTIFICATION_STATE_CHANGED";
            case AccessibilityEvent.TYPE_VIEW_CLICKED:
                return "TYPE_VIEW_CLICKED";
            case AccessibilityEvent.TYPE_VIEW_FOCUSED:
                return "TYPE_VIEW_FOCUSED";
            case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED:
                return "TYPE_VIEW_LONG_CLICKED";
            case AccessibilityEvent.TYPE_VIEW_SELECTED:
                return "TYPE_VIEW_SELECTED";
            case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
                return "TYPE_WINDOW_STATE_CHANGED";
            case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
                return "TYPE_VIEW_TEXT_CHANGED";
        }
        return "default";
    }
 
    private String getEventText(AccessibilityEvent event) {
        StringBuilder sb = new StringBuilder();
        for (CharSequence s : event.getText()) {
            sb.append(s);
        }
        return sb.toString();
    }
 
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        String text = getEventText(event);
        Log.v(TAG, String.format(
                "onAccessibilityEvent: [type] %s [class] %s [package] %s [time] %s [text] %s",
                getEventType(event), event.getClassName(), event.getPackageName(),
                event.getEventTime(), getEventText(event)));
        if (event.getClassName().equals("android.app.AlertDialog")) {
            performGlobalAction(GLOBAL_ACTION_BACK);
            Log.i(TAG, text);
            Intent intent = new Intent("REFRESH");
            intent.putExtra("message", text);
            sendBroadcast(intent);
        }
    }
 
    @Override
    public void onInterrupt() {
        Log.v(TAG, "onInterrupt");
    }
 
    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Log.v(TAG, "onServiceConnected");
        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.flags = AccessibilityServiceInfo.DEFAULT;
        info.packageNames = new String[]
                {"com.android.phone"};
        info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
        setServiceInfo(info);    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru