2014-09-19 4 views
-1

Я хочу, чтобы мое приложение запускало браузер при загрузке моего планшета, но сбой при загрузке. Если кто-то, пожалуйста, дайте мне знать мою ошибку? Я ничего не пишу в своем activity_main.xmle. Он показывает мне сообщение «к сожалению, приложение разбилось».Сбой приложения для запуска при использовании BootReceiver

MainFest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.autostartmyapp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="21" />  
    <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>  
     <receiver android:name=".BootReciever" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver>    
    </application>   
</manifest> 

mainActivitc класс

package com.example.autostartmyapp;  

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 

public class MainActivity extends Activity {  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com/")); 
     startActivity(browserIntent); 
    } 

    public class BootReciever extends BroadcastReceiver 
    {  
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      Intent myIntent = new Intent(context, MainActivity.class); 
      myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myIntent); 
     } 

    }  
} 
+0

и каков ваш логарифм? –

ответ

1

отдельных обоих классов и исправить MainFest, как показано ниже

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.autostartmyapp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="21" />  
    <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>  
     <receiver 
     android:name="com.example.autostartmyapp.BootReciever" 
     android:enabled="true"   > 
     <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>   
</manifest> 

написать MainActiity

MainActivity { 
...} 

BootReceiver класс

package com.example.BootReciever; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
public class BootReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context ctx, Intent arg1) { 

      Intent iMainActivity = new Intent(ctx, yourMainActivityClass); 
      iMainStartActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      ctx.startActivity(iMainActivity); 
    } 

}

0

В догадка, я бы сказал, что это, вероятно, потому, что ваш манифест определяет .BootReceiver как приемник, но на основе кода класс BootReceiver вложен в MainActivity. Таким образом, вам нужно либо переместить BootReceiver в класс верхнего уровня, либо изменить манифест, чтобы указать в качестве приемника .MainActivity.BootReceiver.

Если это не решит проблему, отправьте свой логарифм, чтобы мы могли видеть, какая ошибка вызывает сбой.

+0

его не работает, и logcat не имеет ошибки. он работает нормально нормально, но проблема заключается в загрузке планшета – logcat

0

Используйте это в качестве манифеста секции приемника:

<receiver 
     android:name=".BootReciever" 
     android:enabled="true" 
     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> 
    </receiver> 

И заботиться о классе Broadcast Receiver, который должен быть не внутренний:

package com.example.BootReciever; 

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

public class BootReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context ctx, Intent arg1) { 

      Intent iMainActivity = new Intent(ctx, MainActivity.class); 
      iMainStartActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      ctx.startActivity(iMainActivity); 
    } 



} 
+0

извините, его не работает – logcat

+0

Вы не имеете в виду, что MainActivity не запущен вообще? Вы перемещали BootReciever как новый класс, как я показал? –

+0

Да, я сделал это, как вы, ребята, предлагаете ... вот код, можете ли вы скопировать его и проверить сами? Активность не начинается даже. http://hastebin.com/fedebesesu.xml – logcat

-1

Ваше приложение начинается так быстро и не отпускает другие важные приложения, чтобы начать сначала, я думаю, вы должны добавить некоторую задержку в своем приложении для запуска. как это:

public class BootUpReceiver extends BroadcastReceiver { 

@Override 

public void onReceive(final Context context, Intent intent) { 

    // We can't wait on the main thread as it would be blocked if we wait for too long 
    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      try { 
       // Lets wait some time before starting the service to be fair to other processes on startup 
       Thread.sleep(5000); 
      } catch (InterruptedException e) { 
      } 

      Intent myIntent = new Intent(context, MainActivity.class); 
      myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(myIntent); 
     } 
    }).start(); 
} 
+0

его не работает – logcat

+0

Переместите свой «BootReciever» в новый класс и добавьте его в свой 'manifestast':' ' –

+0

Да, я сделал это, как вы, ребята, предлагаете ... вот код, можете ли вы скопировать его и проверить самостоятельно? Активность не начинается даже. http://hastebin.com/fedebesesu.xml – logcat

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