Урок 100. Service. IntentService. Foreground. Автозагрузка сервиса
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
mkw, к сожалению, это тоже не сработало
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
Не знаю, прошлый вариант по мне рабочий. У нас почти такой же, рабочий
[syntax=xml]
<application
... >
<receiver
android:name=".MyBootReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
[/syntax]
Стоять это должно в теге application!
[syntax=xml]
<application
... >
<receiver
android:name=".MyBootReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
[/syntax]
Стоять это должно в теге application!
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
Нашел причину, странноватая она оказалась. Эта строчка оказалась неработающей:
<uses-permission android:name="ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED" />
Как только я исправил ее на
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
всё сразу заработало.
Странно, подумал я, ведь, можно сказать, я вручную почти и не писал этот permission, а всего лишь начал писать "BOO", потом нажал Enter на первом предложенном варианте, после чего Android Studio (v1.3.1) услужливо дописал за меня "ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED". Сегодня, когда я, наконец, каким-то чудом нашел причину проблемы, то решил попробовать начать писать не "BOO", а "boo". Строка после нажатия Enter стала выглядеть вот так: "android.permission.RECEIVE_BOOT_COMPLETED". Такие дела. Как обычно, смог проверить на Android 4.0.4 и 4.2.2.
Не знаю, проявляет ли себя эта проблема у кого-нибудь еще, но мне она стоила трех потерянных дней и почти всех волос на заднице.
Mikhail_dev, спасибо за информацию насчет QUICKBOOT_POWERON, буду теперь знать. Такой вопрос вдогонку, может ли ресивер за одну загрузку поймать и BOOT_COMPLETED, и QUICKBOOT_POWERON? Или система при загрузке отсылает что-то одно из этого? То есть, имеет ли смысл что-то предпринимать, чтобы ресивер не выполнил onRecieve() два раза?
<uses-permission android:name="ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED" />
Как только я исправил ее на
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
всё сразу заработало.
Странно, подумал я, ведь, можно сказать, я вручную почти и не писал этот permission, а всего лишь начал писать "BOO", потом нажал Enter на первом предложенном варианте, после чего Android Studio (v1.3.1) услужливо дописал за меня "ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED". Сегодня, когда я, наконец, каким-то чудом нашел причину проблемы, то решил попробовать начать писать не "BOO", а "boo". Строка после нажатия Enter стала выглядеть вот так: "android.permission.RECEIVE_BOOT_COMPLETED". Такие дела. Как обычно, смог проверить на Android 4.0.4 и 4.2.2.
Не знаю, проявляет ли себя эта проблема у кого-нибудь еще, но мне она стоила трех потерянных дней и почти всех волос на заднице.
Mikhail_dev, спасибо за информацию насчет QUICKBOOT_POWERON, буду теперь знать. Такой вопрос вдогонку, может ли ресивер за одну загрузку поймать и BOOT_COMPLETED, и QUICKBOOT_POWERON? Или система при загрузке отсылает что-то одно из этого? То есть, имеет ли смысл что-то предпринимать, чтобы ресивер не выполнил onRecieve() два раза?
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
Как можно отправить задачу по нажатии кнопки, а не в onCreate ?
Допустим в OnClick_On1 выполнить
[syntax=java]public class MainActivity extends AppCompatActivity {
TextView TV_Errors, TV_Otvet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TV_Errors = (TextView) findViewById(R.id.TV_Errors);
TV_Otvet = (TextView) findViewById(R.id.TV_Otvet);
Intent intent = new Intent(this, SendWriteDataIntentService.class); //Инициализация сервиса
startService(intent.putExtra("time", 3).putExtra("label", "Call 1"));
startService(intent.putExtra("time", 1).putExtra("label", "Call 2"));
startService(intent.putExtra("time", 4).putExtra("label", "Call 3"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void OnClick_On1(View view) {
}
public void OnClick_On2(View view){
}
public void OnClick_On3(View view){
}
public void OnClick_Exit(View view){
finish();
}
}[/syntax]
Допустим в OnClick_On1 выполнить
Код: Выделить всё
startService(intent.putExtra("time", 1).putExtra("label", "Call 2"));
TextView TV_Errors, TV_Otvet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TV_Errors = (TextView) findViewById(R.id.TV_Errors);
TV_Otvet = (TextView) findViewById(R.id.TV_Otvet);
Intent intent = new Intent(this, SendWriteDataIntentService.class); //Инициализация сервиса
startService(intent.putExtra("time", 3).putExtra("label", "Call 1"));
startService(intent.putExtra("time", 1).putExtra("label", "Call 2"));
startService(intent.putExtra("time", 4).putExtra("label", "Call 3"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void OnClick_On1(View view) {
}
public void OnClick_On2(View view){
}
public void OnClick_On3(View view){
}
public void OnClick_Exit(View view){
finish();
}
}[/syntax]
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
1. методы пишутся с маленькой буквыChvalov писал(а):Как можно отправить задачу по нажатии кнопки, а не в onCreate ?
Допустим в OnClick_On1 выполнить[syntax=java]public class MainActivity extends AppCompatActivity {Код: Выделить всё
startService(intent.putExtra("time", 1).putExtra("label", "Call 2"));
TextView TV_Errors, TV_Otvet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TV_Errors = (TextView) findViewById(R.id.TV_Errors);
TV_Otvet = (TextView) findViewById(R.id.TV_Otvet);
Intent intent = new Intent(this, SendWriteDataIntentService.class); //Инициализация сервиса
startService(intent.putExtra("time", 3).putExtra("label", "Call 1"));
startService(intent.putExtra("time", 1).putExtra("label", "Call 2"));
startService(intent.putExtra("time", 4).putExtra("label", "Call 3"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void OnClick_On1(View view) {
}
public void OnClick_On2(View view){
}
public void OnClick_On3(View view){
}
public void OnClick_Exit(View view){
finish();
}
}[/syntax]
2. Урок 9. Обработчики событий на примере Button.
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
это глюк Андроид Студио, у них по этому поводу открыт тикет, но пока что-то не фиксят.Mkay писал(а):Нашел причину, странноватая она оказалась. Эта строчка оказалась неработающей:
<uses-permission android:name="ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED" />
Как только я исправил ее на
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
всё сразу заработало.
Странно, подумал я, ведь, можно сказать, я вручную почти и не писал этот permission, а всего лишь начал писать "BOO", потом нажал Enter на первом предложенном варианте, после чего Android Studio (v1.3.1) услужливо дописал за меня "ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED". Сегодня, когда я, наконец, каким-то чудом нашел причину проблемы, то решил попробовать начать писать не "BOO", а "boo". Строка после нажатия Enter стала выглядеть вот так: "android.permission.RECEIVE_BOOT_COMPLETED". Такие дела. Как обычно, смог проверить на Android 4.0.4 и 4.2.2.
Не знаю, проявляет ли себя эта проблема у кого-нибудь еще, но мне она стоила трех потерянных дней и почти всех волос на заднице.
Mikhail_dev, спасибо за информацию насчет QUICKBOOT_POWERON, буду теперь знать. Такой вопрос вдогонку, может ли ресивер за одну загрузку поймать и BOOT_COMPLETED, и QUICKBOOT_POWERON? Или система при загрузке отсылает что-то одно из этого? То есть, имеет ли смысл что-то предпринимать, чтобы ресивер не выполнил onRecieve() два раза?
Автодополнение начатое с больших букв дополнняет всю строку большими буквами. Это первый косяк.
А второй это что в манифесте такие имена из одних заглавных валидатор пропускает и не видит, хотя они не валидные.
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
Привет, спасибо за уроки. Кто нить может помочь, этой мой проект в андройд студии https://yadi.sk/d/vpGbyS0E3Tw3Fv пытаюсь сделать сервис который продолжал работать после закрытия (удаление из памяти) основной программы. Сервис показывает статус батареи. Перепробовал кучу вариантов, но сервис все равно тоже отключается. Нужно чтобы он работал, оставался включенным и если видел что само приложение закрылось его открывал заново. Если можете поправьте мой код
Re: Урок 100. Service. IntentService. Foreground. Автозагруз
похоже, что ктото у когото чтото спёр....
http://developer.alexanderklimov.ru/and ... ervice.php
http://developer.alexanderklimov.ru/and ... ervice.php