android 模拟器开机自动启动一个Activity问题?
我用广播机制开机捕获系统传过来的广播BOOT_COMPLETED,然后再用Intent跳转到需要启动的Activity,在androidmanifest中添加了对应的权限...
我用广播机制开机捕获系统传过来的广播BOOT_COMPLETED,然后再用Intent跳转到需要启动的Activity,在androidmanifest 中添加了对应的权限,运行可以,但是关掉模拟器再启动的时候却报错了,网上的一个例子是这样的:
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context ctx, Intent intent) {
Log.d("BootReceiver", "system boot completed");
//start activity
String action="android.intent.action.MAIN";
String category="android.intent.category.LAUNCHER";
Intent myi=new Intent(ctx,CustomDialog.class);
myi.setAction(action);
myi.addCategory(category);
myi.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(myi);
//start service
Intent s=new Intent(ctx,MyService.class);
ctx.startService(s);
}
}
< receiver android:name=".app.BootReceiver">
< intent-filter>
< action android:name="android.intent.action.BOOT_COMPLETED"/>
< category android:name="android.intent.category.HOME" />
< /intent-filter>
< /receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
我看见很多都是这样做得,但是却总是不成功,有做过得朋友帮忙解答下吗?不胜感激 展开
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context ctx, Intent intent) {
Log.d("BootReceiver", "system boot completed");
//start activity
String action="android.intent.action.MAIN";
String category="android.intent.category.LAUNCHER";
Intent myi=new Intent(ctx,CustomDialog.class);
myi.setAction(action);
myi.addCategory(category);
myi.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(myi);
//start service
Intent s=new Intent(ctx,MyService.class);
ctx.startService(s);
}
}
< receiver android:name=".app.BootReceiver">
< intent-filter>
< action android:name="android.intent.action.BOOT_COMPLETED"/>
< category android:name="android.intent.category.HOME" />
< /intent-filter>
< /receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
我看见很多都是这样做得,但是却总是不成功,有做过得朋友帮忙解答下吗?不胜感激 展开
3个回答
展开全部
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context ctx, Intent intent) {
String action = "android.intent.action.BOOT_COMPLETED";
if (intent.getAction().equals(action)) {
Intent ss = new Intent(ctx, Hi.class);
ss.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(ss);
}
}
public class Hi extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello. I started!");
setContentView(tv);
}
}
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".Hi" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BootReceiver" >
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>
我测试了 可以的。
public void onReceive(Context ctx, Intent intent) {
String action = "android.intent.action.BOOT_COMPLETED";
if (intent.getAction().equals(action)) {
Intent ss = new Intent(ctx, Hi.class);
ss.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(ss);
}
}
public class Hi extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello. I started!");
setContentView(tv);
}
}
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".Hi" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BootReceiver" >
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>
我测试了 可以的。
展开全部
应该是Category类别设置不正确。
Manifest中CustomDialog类是否具有android.intent.category.LAUNCHER category?
Manifest中CustomDialog类是否具有android.intent.category.LAUNCHER category?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从提示信息上来猜测的话,是不是启动模拟器的脚本里面路径含有Program Files把Android SDK的安装位置放到一个比较短的路径里面,或许这是Android SDK的一
追问
可是我放在手机里面运行也不行啊,朋友,你也是这样做得吗?能给个代码看看吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询