应用程序没有启动设备上启动 [英] Application is not starting on device boot
本文介绍了应用程序没有启动设备上启动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用的BroadcastReceiver开始我就启动应用程序,但它没有启动
这是我的code
清单code:
< XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.copy
安卓版code =1
机器人:VERSIONNAME =1.0>
<用途-SDK
安卓的minSdkVersion =8
机器人:targetSdkVersion =9/>
<使用-权限的Android:名称=android.permission.RECEIVE_BOOT_COMPLETED/>
<应用
机器人:allowBackup =真
机器人:图标=@可绘制/ ic_launcher
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ AppTheme>
<接收器的Android版本:NAME =com.copy.MyBroadcastreceiver>
<意向滤光器>
<作用机器人:名称=android.intent.action.BOOT_COMPLETED/>
&所述; /意图滤光器>
< /接收器>
<活动
机器人:名称=com.copy.MainActivity
机器人:标签=@字符串/ APP_NAME>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
< /用途>
< /舱单>
广播类code:
公共类MyBroadcastreceiver扩展的BroadcastReceiver
{
@覆盖
公共无效的onReceive(上下文的背景下,意图意图)
{
意图startServiceIntent =新的意图(背景下,MainActivity.class);
startServiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(startServiceIntent);
}
}
MainActivity类:
公共类MainActivity扩展活动
{
ListView控件LVIEW;
私人ArrayList的结果=新的ArrayList();
@燮pressWarnings(未登记)
@覆盖
保护无效的onCreate(包savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
LVIEW =(ListView控件)findViewById(R.id.list1);
PackageManager下午= this.getPackageManager();
意向意图=新的意图(Intent.ACTION_MAIN,NULL);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
名单< ResolveInfo>表= pm.queryIntentActivities(意向,PackageManager.PERMISSION_GRANTED);
对于(ResolveInfo rInfo:名单)
{
results.add(rInfo.activityInfo.applicationInfo.loadLabel(下午)的ToString());
Log.w(已安装的应用程序,rInfo.activityInfo.applicationInfo.loadLabel(PM)的ToString());
}
lView.setAdapter(新ArrayAdapter(这一点,android.R.layout.simple_list_item_1,结果));
lView.setOnItemClickListener(新OnItemClickListener()
{
@覆盖
公共无效onItemClick(适配器视图<>为arg0,查看ARG1,INT ARG2,长ARG3)
{
字符串x =(字符串)arg0.getItemAtPosition(ARG2);
Toast.makeText(getApplicationContext(),这是+ lView.getItemAtPosition(ARG2),Toast.LENGTH_SHORT).show();
}
});
}
}
解决方案
正在使用 startService()
和 MainActivity
不是服务
。你需要使用 startActivity()
代替。
公共类MyBroadcastreceiver扩展的BroadcastReceiver
{
@覆盖
公共无效的onReceive(上下文的背景下,意图意图)
{
意图startActivityIntent =新的意图(背景下,MainActivity.class);
startActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startActivityIntent);
}
}
I used BroadcastReceiver to start my application on boot, but it is not starting
here is my code
Manifest code :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.copy"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="9" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="com.copy.MyBroadcastreceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity
android:name="com.copy.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Broadcast class code:
public class MyBroadcastreceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent startServiceIntent = new Intent(context, MainActivity.class);
startServiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(startServiceIntent);
}
}
MainActivity class :
public class MainActivity extends Activity
{
ListView lView;
private ArrayList results = new ArrayList();
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lView = (ListView) findViewById(R.id.list1);
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> list = pm.queryIntentActivities(intent,PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo : list)
{
results.add(rInfo.activityInfo.applicationInfo.loadLabel(pm).toString());
Log.w("Installed Applications", rInfo.activityInfo.applicationInfo.loadLabel(pm).toString());
}
lView.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1, results));
lView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
{
String x = (String) arg0.getItemAtPosition(arg2);
Toast.makeText(getApplicationContext(), "This is "+lView.getItemAtPosition(arg2), Toast.LENGTH_SHORT).show();
}
});
}
}
解决方案
You are using startService()
and MainActivity
is not a Service
. You need to use startActivity()
instead.
public class MyBroadcastreceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent startActivityIntent = new Intent(context, MainActivity.class);
startActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startActivityIntent);
}
}
这篇关于应用程序没有启动设备上启动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文