2016-11-04 80 views
0

Activity活動不開始在引導完成

public class I1 extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_main); 
    } 

} 

BroadcastReceiver

public class I2 extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent mIntent = new Intent(context, I1.class); 
     mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(mIntent); 
    } 

} 

爲什麼我的活動開始於啓動完成?這就是AndroidManifest.xml

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

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

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="25" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > 

     <activity 
      android:name=".I1" 
      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=".I2" 
      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> 

    </application> 

</manifest> 

代碼和佈局代碼

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:keepScreenOn="true" 
    android:background="#000000" 
    tools:context="com.mypackage.Main" /> 

你可以幫我嗎,有什麼錯我的代碼?

+0

請用OS指定設備名稱。 –

+0

收到意圖?有什麼異常嗎?最後一個,是SD卡上的應用程序? – AxelH

+0

沒有記錄任何異常。我使用USB調試logcat。我試圖在手機和SD卡上安裝應用程序。意圖沒有收到。電話 - 飛利浦Android 4.0.3。 –

回答

1

這個問題真的令人難以置信。我有兩個相同的電話 - 飛利浦Android 4.0.3。其中之一,我測試了我的應用程序有錯誤BOOT_COMPLETED行動。 此代碼是最好的,我認爲

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

和廣播接收器

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent mIntent = new Intent(context, I1.class); 
    mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(mIntent); 
} 

,它也適用!

感謝用戶@AxelH!


此外,在某些電話上(例如ZTE Blade HN),您需要啓動一次主要活動,因爲如果應用程序是新的並且從未打開過,則手機不會讓廣播接收器被激活。即使在更新應用程序後,您也需要這樣做。

0

請嘗試以下

<receiver android:name=".I2" android:enabled="true" android:exported="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
    </intent-filter> 
</receiver> 

另外一點需要注意

如果在外部存儲(SD卡)安裝在您的應用程序,你將永遠不會收到啓動完成動作。所以你必須在清單標籤中指定以下內容。

android:installLocation="internalOnly" 
+0

對不起,它仍然不起作用。什麼都沒發生。我刪除了SD卡,並在手機內存中重新安裝了應用程序。 –

+1

我只會不同意'永遠不會接受'。這是有效的(當我進行測試時它工作正常),但是如果意圖在卡安裝之前發送,則會發生變化。 – AxelH