Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Проблемы с появлением Merged Manifest

В первый раз решил обновить свое опубликованное приложение, помимо исправленной ошибки, поменял versionCode и versionName. Прежде чем добавить новый apk в Google Play Console решил сгенерировать подписанный apk(release) с тем же ключом для опубликованного приложения(все alias и пароли верные, сохраняю такие вещи чтобы не забыть и не запутаться). Кинул подписанный apk в устройство где установлено приложение с Play Market-а. Но при установке пишет "Приложение не установлено. Пакет с таким названием уже существует".

Я точно знаю что на устройстве установлено release apk, а не дебаг.
На эмулятор дебаг версия ставится и работает стабильно.
И тут первый раз в файле манифеста появляется Merged Manifest (работаю с андроид студио около года).
Начинаю читать доки . Даже не преполагал, что manifest-ов несколько в проекте). То ли не хватает опыта еще или знания английского, но пробовал разные аттрибуты ничего не помогает.
На свякий случай файлы манифеста и build.gradle(app)



Не могу разообраться сам с доками, гуглим похожие баги.
Одна из ошибок, что у меня не валидный xml(манифест)
Я делаю Validate моего Manifest-а и выходят такие ошибки

Вот здесь похожие ошибки манифеста у человека
Пробовал удалять .idea и *.iml и заново заимпортить проект, ничего не помогло
Потом одно из решений было зайти Settings -> Languages & Frameworks -> Schemas and DTDs и удалить Ignored Schemas and DTDs. Вот они

Как они там оказались или они там всегда были не знаю, но удаляя их они не удаляются. Так там и висят в ignored.

Далее думал может у меня что то со студией, обновился до текущей стабильной версии 3.2.1 и не стал импортить свои settings.
А загрузил новые(дефолтные). Ничего не поменялось.

Более того теперь все проекты загружаются с Merged Manifest. Это нормально?

Так же вычитал, что я в процессе правки своей обновленной версии приложения якобы правил debug версию, а не release. Как такое может быть я не понимаю. Ведь раньше до попытки обновления версии такого не встречал.

Наверно я все таки до конца не понимаю суть своей проблемы, поэтому и пишу сюда за помощью. Но факт остается фактом приложение не обновляется(см. начало моего сообщения).

Если кто может помочь, напишите пож-та пошагово, что мне попробывать сделать.
Ответ:
Сообщение от bIVEHb
Кинул подписанный apk в устройство где установлено приложение с Play Market-а.
Сообщение от bIVEHb
Пакет с таким названием уже существует
Что не так, я не пойму? Нельзя установить два приложения с одним именем пакета, либо удалить одно, либо заменить при компиляции.
Вопрос: Не работает автозагрузка сервиса AndroidStudio

Делаю пример из урока по Android Studio. Сервис работает только до перезагрузки. Поможите, пожалуйста тугому)
Код MyService.java
Кликните здесь для просмотра всего текста
Код Java(TM) 2 Platform Standard Edition 5.0
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
package p0921servicesimple.develop.startandroid.ru.servise;
 
/**
 * Created by YJYJ on 16.10.2015.
 */
 
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
 
public class MyService extends Service {
 
    final String LOG_TAG = "myLogs";
 
    public void onCreate() {
        super.onCreate();
        Log.d(LOG_TAG, "onCreate");
    }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(LOG_TAG, "onStartCommand");
        someTask();
        return super.onStartCommand(intent, flags, startId);
    }
 
    public void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "onDestroy");
    }
 
    public IBinder onBind(Intent intent) {
        Log.d(LOG_TAG, "onBind");
        return null;
    }
 
 
 
 
    void someTask() {
    }
}


Код BootBroadReciev.java
Кликните здесь для просмотра всего текста
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package p0921servicesimple.develop.startandroid.ru.servise;
 
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
 
/**
 * Created by YJYJ on 16.10.2015.
 */
public class BootBroadReciev extends BroadcastReceiver {
 
    final String LOG_TAG = "myLogs";
 
    public void onReceive(Context context,Intent intent) {
        if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            Log.d(LOG_TAG, "onReceive " + intent.getAction());
            context.startService(new Intent(context, MyService.class));
        }
    }
}


Код 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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="p0921servicesimple.develop.startandroid.ru.servise" >
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
 
        <receiver android:name=".BootBroadReciev"
            android:enabled="true"
            android:exported="false"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter >
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter >
                <action android:name="android.intent.action.ACTION_SHUTDOWN" />
            </intent-filter>
        </receiver>
        <service android:name=".MyService"/>
    </application>
 
 
 
</manifest>
Ответ: Читал, делал, как там все. В тех вариантах тоже не работает ничего и флаг всегда возвращается равным 0
P0941_ServiceKillClient
Кликните здесь для просмотра всего текста

Код MainActivity.java
Кликните здесь для просмотра всего текста
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package p0941servicekillclient.develop.startandroid.ru.servicekillclient;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
 
public class MainActivity extends Activity {
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
 
    public void onClickStart(View v) {
        startService(new Intent("p0942servicekillserver.develop.startandroid.ru.servicekillserver.MyService").putExtra("name", "value"));
    }
}


Код AndroidManifest.xml
Кликните здесь для просмотра всего текста
Код XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="p0941servicekillclient.develop.startandroid.ru.servicekillclient" >
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>



P0942_ServiceKillServer
Кликните здесь для просмотра всего текста

MyService.java
Кликните здесь для просмотра всего текста
Код Java(TM) 2 Platform Standard Edition 5.0
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
package p0942servicekillserver.develop.startandroid.ru.servicekillserver;
 
/**
 * Created by YJYJ on 18.10.2015.
 */
import java.util.concurrent.TimeUnit;
 
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
 
public class MyService extends Service {
 
    final String LOG_TAG = "myLogs";
 
    public void onCreate() {
        super.onCreate();
        Log.d(LOG_TAG, "MyService onCreate");
    }
 
    public void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "MyService onDestroy");
    }
 
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(LOG_TAG, "MyService onStartCommand, name = " + intent.getStringExtra("name"));
        readFlags(flags);
        MyRun mr = new MyRun(startId);
        new Thread(mr).start();
        return START_REDELIVER_INTENT;
    }
 
    public IBinder onBind(Intent arg0) {
        return null;
    }
 
    void readFlags(int flags) {
        Log.d(LOG_TAG, "Читаем флаги");
        switch (flags) {
            case START_FLAG_REDELIVERY:
                Log.d(LOG_TAG, "readFlags: START_FLAG_REDELIVERY");
                break;
            case START_FLAG_RETRY:
                Log.d(LOG_TAG, "readFlags: START_FLAG_RETRY");
                break;
            case 0:
                Log.d(LOG_TAG, "readFlags: 0");
                break;
            default:
                Log.d(LOG_TAG, "readFlags: ERROR. Unexpected flag returned: " + flags);
        }
 
    }
 
    class MyRun implements Runnable {
 
        int startId;
 
        public MyRun(int startId) {
            this.startId = startId;
            Log.d(LOG_TAG, "MyRun#" + startId + " create");
        }
 
        public void run() {
            Log.d(LOG_TAG, "MyRun#" + startId + " start");
            try {
                TimeUnit.SECONDS.sleep(15);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            stop();
        }
 
        void stop() {
            Log.d(LOG_TAG, "MyRun#" + startId + " end, stopSelfResult("
                    + startId + ") = " + stopSelfResult(startId));
        }
    }
}

AndroidManifest.xml
Кликните здесь для просмотра всего текста
Код XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="p0942servicekillserver.develop.startandroid.ru.servicekillserver">
 
    <application android:allowBackup="true" android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher" android:supportsRtl="true"
        android:theme="@style/AppTheme">
 
        <service android:name=".MyService">
            <intent-filter>
                <action
                    android:name="p0942servicekillserver.develop.startandroid.ru.servicekillserver.MyService">
 
                </action>
            </intent-filter>
        </service>
 
    </application>
 
</manifest>

Вопрос: Подгрузка ajax-ом локальных .html

Всем привет. Делаю книгу приложение через cordova. Не получается локально подгрузить .html файлы. Всю книгу вкидывать в проект в виде списка для свайпа не верно, т.к. проект начинает тормозить. Думал разбить 530 страниц на отдельные .html страницы и частями подгружать в процессе работы. Все файлы должны хранится в проекте, т.е. локально. Никаких подключений к серверам не должно быть. Помогите, пожалуйста, разобраться. Спасибо.

index.html

Код
<!DOCTYPE html>
<html lang="en">
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Духовный путь</title>
    </head>
    <body>
    <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>

index.js

Код
var app = {
    initialize: function() {
        this.bindEvents();
    },
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');
 
        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');
 
        console.log('Received Event: ' + id);
    }
};
 
app.initialize();
 
$.ajax({
    type: "POST",
    dataType: "html",
    url: "file:///android_asset/www/book/page1.html",
    success: function(data){
        alert(data);
    }
});

Config.xml

Код
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.spiritual" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Духовный путь</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" version="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

AndroidManifest.xml

Код
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.example.spiritual" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
</manifest>

Ответ:
Всем привет. Делаю книгу приложение через cordova. Не получается локально подгрузить .html файлы. Всю книгу вкидывать в проект в виде списка для свайпа не верно, т.к. проект начинает тормозить. Думал разбить 530 страниц на отдельные .html страницы и частями подгружать в процессе работы. Все файлы должны хранится в проекте, т.е. локально. Никаких подключений к серверам не должно быть. Помогите, пожалуйста, разобраться. Спасибо.

index.html

Код
<!DOCTYPE html>
<html lang="en">
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Духовный путь</title>
    </head>
    <body>
    <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>

index.js

Код
var app = {
    initialize: function() {
        this.bindEvents();
    },
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');
 
        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');
 
        console.log('Received Event: ' + id);
    }
};
 
app.initialize();
 
$.ajax({
    type: "POST",
    dataType: "html",
    url: "file:///android_asset/www/book/page1.html",
    success: function(data){
        alert(data);
    }
});

Config.xml

Код
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.spiritual" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Духовный путь</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" version="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

AndroidManifest.xml

Код
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.example.spiritual" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
</manifest>

Вопрос: User-premission

Создаю приложение для записи звука, все по примерам, приложение крашится, думаю из за того что не получает разрешение на RECORD_AUDIO. Вот файл манифеста

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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="michael.audio">
 
    <uses-permission android:name="android.permission.RECORD_AUDIO" ></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application android:allowBackup="true"
 
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
 
        <activity android:name=".mainAct"
                android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
        </activity>
 
    </application>
 
 
</manifest>
А ошибки при запуске приложения

Bash
1
2
3
12-04 01:59:25.784 20512-20512/? E/AudioRecord: AudioFlinger could not create record track, status: -1
12-04 01:59:25.786 20512-20512/? E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
12-04 01:59:25.786 20512-20512/? E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
Что делать, почему приложение пропускает раздачу прав приложению?
Ответ: Valakin, все оказалось гораздо проще, и гораздо менее очевидно, с шестого ведра нужно в приложении запрашивать права на доступ ко всему, посредством

Java(TM) 2 Platform Standard Edition 5.0
1
2
3
ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.RECORD_AUDIO},
                MY_PERMISSIONS_REQUEST_RECORD);
Но спасибо, что откликнулись на мою проблему
Вопрос: Как разместить карту на Fragment

Есть решенный класс для запуска карт в FragmentActivity. Как запустить в Fragment? Не могу вызвать GetSupportFragmentManager

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
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
 
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
 
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
 
    private static final int REQUEST_ACCESS_FINE_LOCATION = 0;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
 
    @Override
    public void onMapReady(GoogleMap map) {
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        LatLng address1 = new LatLng(53.908757, 27.469890);
        map.addMarker(new MarkerOptions().position(address1).title("Marker in Sydney"));
        map.animateCamera(CameraUpdateFactory.newLatLngZoom(address1, 12));
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_ACCESS_FINE_LOCATION);
            }
            return;
        }
        map.setMyLocationEnabled(true);
    }
 
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        if (requestCode == REQUEST_ACCESS_FINE_LOCATION) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                startActivity(getIntent());
                finish();
            }
        }
    }
}
Добавлено через 1 час 20 минут
Вопрос решен!
Ответ:
Сообщение от PhantomR
Кстати, есть нюанс, что т.к. необходимо использовать SupportMapFragment, то нужно вызывать v4 библиотеку, что может накладывать определённые ограничения.
Давно не занимался проектами без SupportLibrary. Если не секрет, какие ограничения? Нестыковка версий фрагментов в разных частях проекта? Падение на устройствах?
Вопрос: Обработка NFC в запущенной Activity

Доброго времени суток.
Программа для чтения и записи NFC меток.
Когда телефон подношу к NFC устройству телефон предлагает список программ для чтения. Причём независимо от того запущено моё приложение или нет.
Как телефону объяснить, что если приложение уже запущено - не надо заново предлагать на выбор программы для работы с меткой?
Манифест:
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="aaa.nfctest">
    <uses-sdk android:minSdkVersion="10"/>
    <uses-permission android:name="android.permission.NFC" />
    <uses-feature android:name="android.hardware.nfc" android:required="true" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
                       android:resource="@xml/nfc_tech_filter" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>
    </application>
</manifest>
На этапе прототипа весь код небольшой и находится в onCreate:
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
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tInfo = (TextView) findViewById(R.id.tInfo);
 
        if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.NFC))
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.NFC}, 1);
 
        doButton = (Button) findViewById(R.id.DoButton);
        doButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = getIntent();
                tInfo.setText(i.getAction());
                if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(i.getAction()))
                {
                    tagFromIntent = i.getParcelableExtra(NfcAdapter.EXTRA_TAG);
                    //byte[] GetSystemInfoFrame = new byte[] { (byte) 0x0A, (byte) 0x2B };
                    byte[] setConfigByte = new byte[] {(byte)0x02, (byte)0xA4, (byte)0x02, (byte)0xFC};
                    byte[] getConfigByte = new byte[] {(byte)0x02, (byte)0xA0, (byte)0x02};
                    NfcV nfcv = NfcV.get(tagFromIntent);
                    try {
                        nfcv.close();
                        nfcv.connect();
                       // byte[] answ = nfcv.transceive(setConfigByte);
                        byte[] conf = nfcv.transceive(getConfigByte);
                        nfcv.close();
                    }
                    catch (IOException e) {
                        tInfo.setText(e.getMessage());
                    }
 
                }
            }
        });
        adapter = NfcAdapter.getDefaultAdapter(this);
        if (adapter == null) {
            tInfo.setText("Null adapter");
            finish();
        }
        if (adapter.isEnabled() == false) {
            tInfo.setText("Adapter is Off");
            finish();
        }
        Intent i = getIntent();
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(i.getAction())) {
            tagFromIntent = i.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            tInfo.setText(tagFromIntent.getId().toString());
        }
        mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
    }
Ответ: Паблито, onNewIntent есть (кстати, срабатывает, только, если стоит android:launchMode="singleInstance"). Но всё-равно, ОС предлагает список программ, если моё запущено.

Добавлено через 1 минуту
Java
1
2
3
4
5
6
7
8
    @Override
    protected void onNewIntent(Intent i) {
        super.onNewIntent(i);
        tInfo.setText(i.getAction());
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(i.getAction())) {
            tagFromIntent = i.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        }
    }
Добавлено через 22 часа 17 минут
Проблему решил. Спасло
Вопрос: Не срабатывает событие onNewIntent на чтение метки

Доброго времени суток.
Пытаюсь по мунуалам читать NFC метку. Запускаюсь на устройстве на 6 андройде. NFC адаптер включен.

private NfcAdapter adapter;
private Tag myTag;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.NFC))
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.NFC}, 1);
        if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.BIND_NFC_SERVICE))
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.BIND_NFC_SERVICE}, 1);   
        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
        adapter = NfcAdapter.getDefaultAdapter(this);
        if (adapter == null) {
            log.setText("Bad adapter");
            finish();
        }
        readFromIntent(getIntent());
        IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
        tagDetected.addCategory(Intent.CATEGORY_DEFAULT);
    }
 
 @Override
    protected void onNewIntent(Intent intent) {
        setIntent(intent);
        readFromIntent(intent);
        if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){
            myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        }
    }
 
    private void readFromIntent(Intent intent) {
        String action = intent.getAction();
        if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
                || NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
                || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
            Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
           /* полезные действия */
        }
    }

Файл манифеста:

<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
 
<intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
</intent-filter>
<meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter" />

При контакте с NFC устройством ничего не происходит, даже не срабатывает точка останова в onNewIntent.

Такое ощущение, что что-то я пропустил, но не могу найти различия между моим кодом и кодом в статьях "на тему".
Ответ:
Ну тогда даже не знаю. Попробуй вот  почитать. Прям готовый пример практически. Смотри фореграунд чтение.

Может неправильное событие, может неправильный формат метки.
Некоторое содержимое NDEF меток нельзя перехватить. Ну по крайней мере мне не удалось. Если записан URL то телефон всегда предлагает выбор приложений. Попробуй записать сначала что-нибудь свое сторонней программой, потом уже читать.

Метка точно доступна для чтения?
Вопрос: реклама от admob в приложениях андроид

Вставил рекламу в приложение в соответствии с инструкцией на сайте admob, но отображается только тестовый баннер. Почему?
Manifest.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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.denis1993.xxx_pc.calculator" >
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/aaa"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
        <activity android:name=".MainActivity"
            android:windowSoftInputMode="stateAlwaysHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>
activity_main.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
 xmlns:ads="http://schemas.android.com/apk/res-auto"
...
 <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="BANNER"
            ads:adUnitId="@string/banner_ad_unit_id">
        </com.google.android.gms.ads.AdView>
bulid.grandle:
...
compile 'com.google.android.gms: play-services-ads:8.3.0'
...
string.xml:
XML
1
2
3
4
<resources>
    <string name="app_name">Calculator</string>
    <string name="banner_ad_unit_id">ca-app-pub-7912591647703703/89855644</string>
</resources>
main_activity.java:
import com.google.android.gms.ads.AdRequest;
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
 import com.google.android.gms.ads.AdView;
....
  AdView mAdView = (AdView) findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder().build();
            mAdView.loadAd(adRequest);
Пробовал и на реальном устройстве , и на эмуляторе , и через Google Play устанавливать, всё равно показывается только тестовый баннер
Ответ: вот так
Вопрос: Вывод смс в textView

Добрый день Уже пару дней не могу разобраться с кодом. Половина кода, была свиснута с этого видео Мне нужно было только получение смс, и вывод в textView, перехватить удалось, а вот вывести в textView не получается. Прошу помощи, очень надеюсь что не пройдете мимо

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
public class MainActivity extends Activity {
    
    IntentFilter intentFilter;
    
    private BroadcastReceiver intentReceiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context context,Intent intent)
        {
            TextView inTxt = (TextView) findViewById(R.id.textView1);
            inTxt.setText(intent.getExtras().getString("sms"));
            
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction("SMS_RECEIVED_ACTION");
        }   
    };
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
    
}
}


SmsRecever.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
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.TextView;
import android.widget.Toast;
 
public class SmsRecever extends BroadcastReceiver {
 
    @SuppressWarnings("deprecation")
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        SmsMessage[] messages = null;
        String str = "";
        if(bundle != null)
        {
            Object[] pdus = (Object[]) bundle.get("pdus");
            messages = new SmsMessage[pdus.length];
            for(int i=0; i<messages.length; i++)
            {
                messages[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
                str += "Message from "+messages[i].getOriginatingAddress();
                str += " :";
                str += messages[i].getMessageBody().toString();
                str += "\n";
            }
            Toast.makeText(context, str, Toast.LENGTH_LONG).show();
        
 
            Intent broadcastIntent = new Intent();
            broadcastIntent.setAction("SMS_RECEIVED_ACTION");
            broadcastIntent.putExtra("sms", str);
            context.sendBroadcast(broadcastIntent);
            abortBroadcast();
 
    }
    }
    }


Manifest

Кликните здесь для просмотра всего текста
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="example.smsrecever"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.READ_SMS"/>
    
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".AdctivityMainActivity"
            android:label="@string/title_activity_adctivity_main" >
        </activity>
        <receiver android:name="SmsRecever">
            <intent-filter android:priority="100">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
    </application>
 
</manifest>
Ответ: Очень загадочный код
Вопрос: GCM notification на выключеный экран

Народ помогите разобраться в проблеме с GCM. На экран блокировки уведомления приходят, на просто включеный экран уведомления приходят. Если выключить экран (питание) то пуши не доходят, телефон не просыпается и никак не взаимодействует с пришедшим сообщением. Телефон meizu m2 note с lollipop 5.1

Есть класс GCMPushReceiverService:
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
public class GCMPushReceiverService extends GcmListenerService {
 
    //This method will be called on every new message received
    @Override
    public void onMessageReceived(String from, Bundle data) {
        //Getting the message from the bundle
        String message = data.getString("message");
        //Displaying a notiffication with the message
        sendNotification(message);
    }
 
    //This method is generating a notification and displaying the notification
    private void sendNotification(String message) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        int requestCode = 0;
        PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
        Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentText(message)
                .setAutoCancel(true)
                .setContentIntent(pendingIntent);
 
        NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
    }
}
класс GCMRegistrationIntentService:
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
public class GCMRegistrationIntentService extends IntentService {
    //Constants for success and errors
    public static final String REGISTRATION_SUCCESS = "RegistrationSuccess";
    public static final String REGISTRATION_ERROR = "RegistrationError";
 
    //Class constructor
    public GCMRegistrationIntentService() {
        super("");
    }
 
 
    @Override
    protected void onHandleIntent(Intent intent) {
        //Registering gcm to the device
        registerGCM();
    }
 
    private void registerGCM() {
        //Registration complete intent initially null
        Intent registrationComplete = null;
 
        //Register token is also null
        //we will get the token on successfull registration
        String token = null;
        try {
            //Creating an instanceid
            InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
 
            //Getting the token from the instance id
            token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
 
            //Displaying the token in the log so that we can copy it to send push notification
            //You can also extend the app by storing the token in to your server
            Log.w("GCMRegIntentService", "token:" + token);
 
            //on registration complete creating intent with success
            registrationComplete = new Intent(REGISTRATION_SUCCESS);
 
            //Putting the token to the intent
            registrationComplete.putExtra("token", token);
        } catch (Exception e) {
            //If any error occurred
            Log.w("GCMRegIntentService", "Registration error");
            registrationComplete = new Intent(REGISTRATION_ERROR);
        }
 
        //Sending the broadcast that registration is completed
        LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
    }
}
класс GCMTokenRefreshListenerService:
Java
1
2
3
4
5
6
7
8
9
public class GCMTokenRefreshListenerService extends InstanceIDListenerService {
 
    //If the token is changed registering the device again
    @Override
    public void onTokenRefresh() {
        Intent intent = new Intent(this, GCMRegistrationIntentService.class);
        startService(intent);
    }
}
и MainActivity:
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
public class MainActivity extends AppCompatActivity {
 
    //Creating a broadcast receiver for gcm registration
    private BroadcastReceiver mRegistrationBroadcastReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //Initializing our broadcast receiver
        mRegistrationBroadcastReceiver = new BroadcastReceiver() {
 
            //When the broadcast received
            //We are sending the broadcast from GCMRegistrationIntentService
 
            @Override
            public void onReceive(Context context, Intent intent) {
                //If the broadcast has received with success
                //that means device is registered successfully
                if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_SUCCESS)){
                    //Getting the registration token from the intent
                    String token = intent.getStringExtra("token");
                    //Displaying the token as toast
                    Toast.makeText(getApplicationContext(), "Registration token:" + token, Toast.LENGTH_LONG).show();
 
                    //if the intent is not with success then displaying error messages
                } else if(intent.getAction().equals(GCMRegistrationIntentService.REGISTRATION_ERROR)){
                    Toast.makeText(getApplicationContext(), "GCM registration error!", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show();
                }
            }
        };
 
        //Checking play service is available or not
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
 
        //if play service is not available
        if(ConnectionResult.SUCCESS != resultCode) {
            //If play service is supported but not installed
            if(GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
                //Displaying message that play service is not installed
                Toast.makeText(getApplicationContext(), "Google Play Service is not install/enabled in this device!", Toast.LENGTH_LONG).show();
                GooglePlayServicesUtil.showErrorNotification(resultCode, getApplicationContext());
 
                //If play service is not supported
                //Displaying an error message
            } else {
                Toast.makeText(getApplicationContext(), "This device does not support for Google Play Service!", Toast.LENGTH_LONG).show();
            }
 
        //If play service is available
        } else {
            //Starting intent to register device
            Intent itent = new Intent(this, GCMRegistrationIntentService.class);
            startService(itent);
        }
    }
 
    //Registering receiver on activity resume
    @Override
    protected void onResume() {
        super.onResume();
        Log.w("MainActivity", "onResume");
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(GCMRegistrationIntentService.REGISTRATION_SUCCESS));
        LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                new IntentFilter(GCMRegistrationIntentService.REGISTRATION_ERROR));
    }
 
 
    //Unregistering receiver on activity paused
    @Override
    protected void onPause() {
        super.onPause();
        Log.w("MainActivity", "onPause");
        LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
    }
 
}

manifest.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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.simplifiedcoding.androidgcm">
 
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <permission
        android:name="net.simplifiedcoding.androidgcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="net.simplifiedcoding.androidgcm.permission.C2D_MESSAGE" />
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
        <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
                <category android:name="net.simplifiedcoding.androidgcm"/>
            </intent-filter>
        </receiver>
 
        <service android:name=".GCMPushReceiverService" android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
            </intent-filter>
        </service>
 
        <service android:name=".GCMRegistrationIntentService" android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID"/>
            </intent-filter>
        </service>
 
    </application>
 
</manifest>
Добавлено через 3 часа 49 минут
Взял другой телефон, все работает.
Теперь вопрос в другом, сообщение приходит на не выводится на экран (экран не загорается вообще). Как сделать что бы отобразилось ?
Ответ: так я и спашиваю - кто отправляет изначально это сообщение?