如何解决错误"未找到默认活动"从服务启动我的应用程序时发生?

时间:2017-11-09 17:36:05

标签: android android-activity android-service

我需要使用服务启动 Android应用程序,然后从服务启动活动。首先,我通过引用 Stack Overflow 创建了示例应用程序。我创建了 StartReceiver 类来启动服务

public class StartReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent arg1)
    {
        Intent intent = new Intent(context,MyService.class);
        context.startService(intent);
        Log.i("Autostart", "started");
    }
}

这是我的服务类。

public class MyService extends Service
{
    private static final String TAG = "MyService";
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
    }

    @Override
    public void onStart(Intent intent, int startid)
    {
        Intent intents = new Intent(getBaseContext(),MainActivity.class);
        intents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intents);
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
    }
}

这是我的活动类。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(getBaseContext(), "Hello........", Toast.LENGTH_LONG).show();
    }

}

这是我的 AndroidManifest 文件。

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

android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

<application android:icon="@mipmap/ic_launcher" android:label="@string/app_name">

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

    <activity android:name=".MainActivity"></activity>
    <service android:enabled="true" android:name=".MyService" />
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
</manifest>

当我运行应用程序时,Android Studio会在运行应用程序时显示错误:找不到默认活动我该如何修复此错误?

3 个答案:

答案 0 :(得分:1)

将此信息放入清单中的活动

 <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

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

答案 1 :(得分:1)

android.intent.action.MAIN表示此活动是应用程序的入口点,即启动应用程序时,会创建此活动。

android.intent.category.LAUNCHER表示应在应用程序启动器中列出入口点

所以你需要在清单中添加它。只需改变:

<activity android:name=".MainActivity"></activity>

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

答案 2 :(得分:-1)