2012-07-13 6 views
0

Я новичок в разработке android, и У меня есть приложение, которое при запуске из значка приложения в меню/домашних экранах работает просто отлично. Однако, когда я пытаюсь запустить его при загрузке, он падает (учитывая, что если я вернусь к значку, он все равно будет работать). Мне интересно, что здесь не так. Имейте в виду, что я делаю тестирование на своем личном телефоне, который является android 2.3, и это ROOTED. Некоторые, как я не думаю, что это должно быть так сложно, как это нужно делать, поскольку большинство приложений для Android работают в 9/10 или похожим образом. Проще говоря: что я делаю неправильно?Android BroadcastReceiver не работает при назначении

В то же время здесь мой код для вещательного приемника:

package path.to.file; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class autoBot extends BroadcastReceiver { 
private static final String LOG_TAG = "StartAtBootServiceReceiver"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.e(LOG_TAG, "onReceive:"); 
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
     Intent i = new Intent(); 
     i.setAction("path.to.file.MainActivity"); 
     context.startActivity(i); 
    } 
} 
} 

А также файл манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
installlocation="internalOnly" 
package="path.to.file" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="15" /> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name="autoBot" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" > 
      </action> 

      <category android:name="android.intent.category.HOME" > 
      </category> 
     </intent-filter> 
    </receiver> 
</application> 

</manifest> 
+2

Добавьте в свой манифест 'MainActivity' еще один« фильтр намерения »с действием, которое вы установили в' Intent', используемом в 'BroadcastReceiver', и повторите попытку. – Luksprog

+0

, где он падает? LogCat? – Ran

ответ

1

Есть ли конкретная причина вы добавляете действие в ваш намерение? Если ваша единственная цель состоит в том, чтобы начать свою деятельность при запуске, сделать это в BroadcastReceiver:

Intent i = new Intent(context, MainActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 

Кроме того, удалите эти строки из манифеста под приемника тега, вы не будете нуждаться в них есть:

<category android:name="android.intent.category.HOME" ></category> 
+0

Следует отметить, что для запуска Activity из BroadcastReceiver в Intent необходимо добавить флаг FLAG_ACTIVITY_NEW_TASK. – Devunwired

+0

Спасибо за отзыв, я отредактировал свой ответ. – Erol

+0

Я собираюсь сделать это и вернуться к вам с Yay/nay. – linuxrox

Смежные вопросы