导航:首页 > 操作系统 > android启动应用代码

android启动应用代码

发布时间:2022-10-28 10:59:01

① 如何使android应用开机时自动启动

如果需要在Android开机时自动启动应用程序,可以通过响应android.intent.action.BOOT_COMPLETED广播消息来实现, Android系统启动结束时,会发出 android.intent.action.BOOT_COMPLETED 消息。 具体步骤如下:
1. 定义一个Broadcast Receiver ,比如:BootupReceiver

[java]
public class BootupReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {

//better delay some time.
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent i = new Intent(context, BootupDemoActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

}

}
public class BootupReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {

//better delay some time.
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent i = new Intent(context, BootupDemoActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

}

}

用于响应android.intent.action.BOOT_COMPLETED。

2. 在Manifest文件中定义该Broadcast Receiver

<receiver android:name=”.BootupReceiver” android:enabled=”true”
android:permission=”android.permission.RECEIVE_BOOT_COMPLETED”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED”></action>
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>

</receiver>

3. 加上所需权限

<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED” />

这些,但手机重启示会自动运行你的应用。 不过此时你的应用可能会被屏幕锁定挡住。解除屏幕锁定后可以看到你运行的应用。

如果想用户一开机就看到你的应用,可以使用代码就屏幕锁去除,方法如下:

1. 在Activity的onCreate事件处理中添加下面代码
[java]
KeyguardManager keyguardManager
= (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);

lock.disableKeyguard();
KeyguardManager keyguardManager
= (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);

lock.disableKeyguard();
2. 在Manifest文件中添加所需权限

<uses-permission android:name=”android.permission.DISABLE_KEYGUARD” />

② 求android开机启动代码

【原理】

当Android系统完成BOOT阶段之后,就会发送一条名为 ACTION_BOOT_COMPLETED 的广播,我们便可在一个BroadcastReceiver中捕获这条广播,然后启动我们的Activity或者Service,当然要注意的是,我们的application必须具有捕获该广播的权限,下面请看具体步骤:

【步骤一】首先要有一个用于开机启动的Activity或者Service,这里以系统自己创建的最简单的Activity为例进行讲解。

  • package com.billhoo.study;

  • import android.app.Activity;

  • import android.os.Bundle;

  • public class BootTestActivity extends Activity {

  • /** Called when the activity is first created. */

  • @Override

  • public void onCreate(Bundle savedInstanceState) {

  • super.onCreate(savedInstanceState);

  • setContentView(R.layout.main);

  • }

  • }

【步骤二】我们要编写一个BroadcastReceiver用以捕获ACTION_BOOT_COMPLETED这条广播,并在捕获之后启动我们要启动的Activity。

注意:必须在intent中添加Intent.FLAG_ACTIVITY_NEW_TASK标记,这就是我之前老是启动失败的原因。至于为什么,我还在研究SDK doc,明白了之后就回来补上。

  • package com.billhoo.study;

  • import android.content.BroadcastReceiver;

  • import android.content.Context;

  • import android.content.Intent;

  • public class BootCompletedReceiver extends BroadcastReceiver {

  • @Override

  • public void onReceive(Context context, Intent intent) {

  • if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))

  • {

  • Intent newIntent = new Intent(context, BootTestActivity.class);

  • newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //注意,必须添加这个标记,否则启动会失败

  • context.startActivity(newIntent);

  • }

  • }

  • }

【步骤三】在AndroidManifest.xml配置文件中注册我们的BroadcastReceiver

  • <receiver android:name=".BootCompletedReceiver">

  • <intent-filter>

  • <action android:name="android.intent.action.BOOT_COMPLETED" />

  • </intent-filter>

  • </receiver>

【步骤四】在AndroidManifest.xml配置文件中添加允许我们捕获该广播的权限

  • <!-- permissions -->

  • <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

  • 之前把uses-permission 打错成permission ,结果一直提示下面这个错误:

  • Permission Denial: receiving Intent { act=android.intent.action.BOOT_COMPLETED flg=0x8000010 (has extras) } to com.example.boottest/.BootCompletedReceiver requires android.permission.RECEIVE_BOOT_COMPLETED e to sender null (uid 1000)

重启虚拟机,大功告成。

下面附上完成的AndroidManifest.xml,以便大家理解参考

  • <?xml version="1.0" encoding="utf-8"?>

  • <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  • package="com.billhoo.study" android:versionCode="1"

  • android:versionName="1.0">

  • <uses-sdk android:minSdkVersion="4" />

  • <!-- permissions -->

  • <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

  • <application android:icon="@drawable/icon" android:label="@string/app_name">

  • <!-- activities -->

  • <activity android:name=".BootTestActivity" android:label="@string/app_name">

  • <intent-filter>

  • <action android:name="android.intent.action.MAIN" />

  • <category android:name="android.intent.category.LAUNCHER" />

  • </intent-filter>

  • </activity>

  • <!-- receivers -->

  • <receiver android:name=".BootCompletedReceiver">

  • <intent-filter>

  • <action android:name="android.intent.action.BOOT_COMPLETED" />

  • </intent-filter>

  • </receiver>

  • </application>

  • </manifest>

③ 如何在android应用程序中启动其他apk程序,被启动程序退出后返回之前的程序

Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动: Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);


但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。

下面是实现代码:

private void openApp(String packageName) {
PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);

List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
String packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);
startActivity(intent);
}
}

④ 怎样查看 Android APP 源代码

需要把反编译的apk存放到apktools同级文件夹目录下,然后运行要查看的安装包,具体操作如下:

1、首先把反编译的apk存放到apktools同级文件夹目录下,如下图所示。

⑤ android 怎样通过暗码启动应用程序

参考如下:
首先在manifest.xml中 添加 <receiver >相关的代码
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".PhoneGuide"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="Cipher">
<intent-filter>
<action
android:name="android.provider.Telephony.SECRET_CODE"/>
<!-- *#*#1001#*#* -->>
<data android:scheme="android_secret_code"

android:host="1001"/>
</intent-filter>
</receiver>
</application>
然后Cipher.java的代码如下
[java] view plain
package feng.PhoneGuide;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* 通过暗码启动重置activity的处理
* */
public class Cipher extends BroadcastReceiver{
public Cipher(){

}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
if(arg1.getAction().equals
("android.provider.Telephony.SECRET_CODE")){
Intent i = new Intent(Intent.ACTION_MAIN);
i.setClass(arg0, PhoneGuide.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
arg0.startActivity(i);
}
}
}
然后在打电话的界面输入 *#*#1001#*#* 就可以启动相应的应用程序了。

⑥ android Intent启动其它应用

可以带别的东西。
需要com.rarlab.rar.MainActivity类的支持。
com.rarlab.rar.MainActivity可以在onCreate中通过getIntent来得到
传入来的intent.
intent可以设置一些数据,比如Intent.putExtra("type","rar")
然后onCreate得到后,可以Intent.getStringExtra("type")

⑦ android怎么在launcher前启动一个应用程序

如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自带的Home,而且不希望用户安装的Launcher来替换掉你的Launcher,应该如何来实现呢?
我们可以通过修改Framework层来实现这样的功能。

1) 首先了解一下Android的启动过程。
Android系统的启动先从Zygote开始启动,然后......(中间的过程就不说了).....一直到了SystemServer(framework)这个地方,看到这段代码:

/**
* This method is called from Zygote to initialize the system. This willcause the native
* services (SurfaceFlinger, AudioFlinger, etc..) to be started. Afterthat it will call back
* up into init2() to start the Android services.
*/
native public static void init1(String[] args);

public static void main(String[] args) {
if (SamplingProfilerIntegration.isEnabled()) {
SamplingProfilerIntegration.start();
timer = new Timer();
timer.schele(new TimerTask() {
@Override
public void run() {
SamplingProfilerIntegration.writeSnapshot("system_server");
}
}, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
}

// The system server has to run all of the time, so it needs to be
// as efficient as possible with its memory usage.
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);

System.loadLibrary("android_servers");
init1(args);
}

public static final void init2() {
Log.i(TAG, "Entered the Android system server!");
Thread thr = new ServerThread();
thr.setName("android.server.ServerThread");
thr.start();
}
}

从SystemServer的main函数开始启动各种服务:
首先启动init1,然后启动init2.从上面的注释可以看到:init1这个方法时被Zygote调用来初始化系统的,init1会启动native的服务如SurfaceFlinger,AudioFlinger等等,这些工作做完以后会回调init2来启动Android的service。

这里我们主要来关注init2的过程。init2中启动ServerThread线程,ServerThread中启动了一系列的服务,比如这些:

ActivityManagerService
EntropyService
PowerManagerService
TelephonyRegistry
PackageManagerService
AccountManagerService
BatteryService
HardwareService
Watchdog
SensorService
BluetoothService
StatusBarService
ClipboardService
InputMethodManagerService
NetStatService
ConnectivityService
AccessibilityManagerService
NotificationManagerService
MountService
DeviceStorageMonitorService
LocationManagerService
SearchManagerService
FallbackCheckinService
WallpaperManagerService
AudioService
BackupManagerService
AppWidgetService

这些大大小小的服务起来以后,开始
((ActivityManagerService)ActivityManagerNative.getDefault()).systemReady()
在systemReady后开始开始启动Launcher。在寻找Launcher的时候是根据HOME的filter(在Manifest中定义的<categoryandroid:name="android.intent.category.HOME" />)来过滤。
然后根据filter出来的HOME来启动,如果只有一个HOME,则启动这个HOME,如果用户自己装了HOME,那就会弹出来一个列表供用户选择。

我们现在希望从这里弹出我们自己定制的Launcher,同时也不希望弹出选择HOME的界面,我们不希望用户修改我们的home,比如我们的home上放了好多广告,以及强制安装的程序,不希望用户把它干掉。

我们可以通过这样来实现:

2) 定义一个私有的filter选项,然后用这个选项来过滤HOME.
一般情况下我们使用Manifest中定义的<categoryandroid:name="android.intent.category.HOME"来过滤的,我们现在增加一个私有的HOME_FIRST过滤。

在Intent.java(frameworks/base/core/java/android/content/Intent.java)中添加两行代码

//lixinso:添加CATEGORY_FS_HOME
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String CATEGORY_FS_HOME= "android.intent.category.FS_HOME";

3)修改和CATEGORY_HOME相关的所有的地方,都改成CATEGORY_FS_HOME,主要是framework中的这几个地方:使用grep命令查找要修改的地方:

grep CATEGORY_HOME -l * -R

将上述文件中和CATEGORY_HOME相关的所有的地方,都改成CATEGORY_FS_HOME。
4) 写一个自己的Launcher.
可以参考android sample中的Launcher,或者android源代码中的 /packages/apps/Launcher 来写。
在Launcher中标记其是不是Launcher的最关键的代码时Manifest中的filter:android:name="android.intent.category.HOME"
现在我们定义了自己的filter,那么,我们在我们自己写的Launcher中将Manifest改为:
<application android:process="android.process.acore3"android:icon="@drawable/icon"android:label="@string/app_name">
<activity android:name=".FirstAppActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN" />
<categoryandroid:name="android.intent.category. FS_HOME" />
<categoryandroid:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY"/>
</intent-filter>
</activity>
</application>

然后将编译好的apk放到方式fs100_root/system/app目录下。

5)将Android自带的Launcher删除掉
包括源代码(packages/apps/Launcher)和apk(/out/target/proct/generic/system/app/Launcher.apk)。

6) 重新编译Android
做完这些工作,就可以重新编译Android了,我们可以编译修改过的几个相关的包,可以用mmm命令来编译部分的改动。这里需要这样编译:

$ source build/envsetup.sh
$ lunch
$ mmm frameworks/base
$ mmm frameworks/base/services/java
$ mmm frameworks/policies/base/mid
$ mmm frameworks/policies/base/phone

重新启动开发板,从开发板上就可以看到启动的Launcher是我们自己的Launcher,不会出现默认的Launcher了,也不会出现选择界面。

9)我们再验证一下,如果用户装上了一个其他的Launcher(Home)会怎么样。
从网上找一个一般的Launcher或者自己写一个一般的Launcher装上去,重新启动,不会出现选择界面。
按HOME键也不会出来两个HOME来选择。

这样我们就牢牢控制了用户的桌面。
只有我们自己定制的HOME才能装上。这对于定制Android设备的厂商很有用处。

⑧ android管理开机自启动的代码

Android开机自启动是通过BroadcastReceiver 注册开机广播来实现的
Android接收开机广播,需要用到播广播接收者BroadcastReceiver组件。
具体代码:
1.在配置文件AndroidManifest.xml中向系统注册receiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

2.需要添加相应权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

3.在Receiver中就可以添加开机需要进行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 开机后执行的代码
}
}

⑨ 如何实现Android重启应用程序代码

1、选中项目“Run As——》Android Application”重新运行Android项目即可

2、如果已经安装,关闭后,重新打开,重新执行apk程序

⑩ Android如何通过代码重启应用程序

楼上的方法是重启activity,不过也只能这样,代码是在应用程序内部执行的,应用程序都关了,还怎么运行重启的代码,你还是慢慢自己微调,达到类似重启的效果吧

阅读全文

与android启动应用代码相关的资料

热点内容
openldaplinux安装 浏览:23
java取月的最后一天 浏览:10
腾讯云服务器多久退款 浏览:949
微信广告植入系统源码 浏览:922
一年级语文上册pdf 浏览:315
好久不见app干什么用的 浏览:143
压缩包解压码对方可以更改吗 浏览:256
pdf电子书制作软件 浏览:888
数控三通编程 浏览:300
linux多终端 浏览:811
法律写作pdf 浏览:144
国货哪个品牌最好app 浏览:951
看哪个app给钱最多 浏览:178
编程靠经验吗 浏览:759
c教程pdf下载地址 浏览:573
制作视频哪个app有瘦脸功能 浏览:649
linux查看线程内存 浏览:509
命令行签名apk 浏览:92
网页照片旋转源码 浏览:842
QQ会员头像源码 浏览:263