我需要使用服务启动 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会在运行应用程序时显示错误:找不到默认活动。 我该如何修复此错误?
答案 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)