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> 

これが私が呼んでいる「AutoBot」です(スパムの理由ではなく、私はトランスフォーマーが好きです):

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);
    }
}  

これで完了です。

4

1 に答える 1

1

マニフェストでは、クラスの重要な名前を省略しました。通常、たとえば、次の例のように、[dot][ClassName]または完全なパッケージ名に省略できます.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);
    }
}  

クラスで@Overrideのの使用法に注意してください。onReceive

通常、推奨されるルートは、起動時にアラームを開始し、アラームの期限が切れたときにブロードキャストをリッスンすることです。これにより、アクティビティが起動を妨げず、起動プロセスが「安定」するようになります。少しの間。

于 2012-07-12T20:22:01.423 に答える