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"/>

我看见很多都是这样做得,但是却总是不成功,有做过得朋友帮忙解答下吗?不胜感激
展开
 我来答
若amp惜
2011-12-29 · TA获得超过229个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:142万
展开全部
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>
我测试了 可以的。
郝子琪
2011-12-24 · TA获得超过1746个赞
知道大有可为答主
回答量:1579
采纳率:0%
帮助的人:1479万
展开全部
应该是Category类别设置不正确。
Manifest中CustomDialog类是否具有android.intent.category.LAUNCHER category?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waist728
2011-12-23 · 超过17用户采纳过TA的回答
知道答主
回答量:165
采纳率:0%
帮助的人:110万
展开全部
从提示信息上来猜测的话,是不是启动模拟器的脚本里面路径含有Program Files把Android SDK的安装位置放到一个比较短的路径里面,或许这是Android SDK的一
追问
可是我放在手机里面运行也不行啊,朋友,你也是这样做得吗?能给个代码看看吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式