2012-07-12 58 views
3

我試圖讓我的應用程序自動啓動在啓動時,它會同時啓動應用清單/活動錯誤

這裏出現錯誤是「自動啓動」我的清單和程序文件:

manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="this.bad.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" 
     android:enabled="true" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 
</application> 

</manifest> 

這裏是「汽車人」,我把它稱爲(不適用於垃圾的原因,我就像變壓器):

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

public class autoBot extends BroadcastReceiver { 
    public void onReceive(Context context, Intent intent) { 
     Intent startUp = new Intent(context, MainActivity.class); 
     context.startActivity(startUp); 
    } 
} 

所以我們有它!

回答

1

在你的清單,你離開了這個類的一個重要的名字,通常情況下,可以縮寫爲[點] [類名]或全包的名稱,如例如.autoBot或見下面的例子:

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

而在你的廣播接收器:

public class autoBot extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent startUp = new Intent(context, MainActivity.class); 
     context.startActivity(startUp); 
    } 
} 

通知@OverrideonReceive類的用法。

建議採取的正常路線通常是在啓動時啓動報警,並在報警已過期時監聽廣播,這樣您的活動不會啓動啓動,並且允許啓動過程以「解決」一點。

+0

湯姆,謝謝你的提示,但它仍然沒有按預期工作。這可能是因爲我在SD卡上,而不是在電話上,因爲我聽到SD無法播放廣播內容的應用程序。其他則表示它停止工作(在完成上述對我的文件的修改之後) – linuxrox 2012-07-12 20:39:18

+0

由於文件系統級別的可執行位被阻止,因此無法將二進制文件從SD卡運行。 – t0mm13b 2012-07-12 20:53:03