❶ 如何在android系統中開啟自己的服務
Android開機啟動Service,需要使用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) {
}
}
4.執行開機後的操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 這樣即可開機啟動Service了。
❷ android中如何用action啟動另一個程序中的service
startService(new Intent(action))這樣就可以吧,啟動和進程間通信不是一樣的進程間通信應該是指像音樂播放器那種實時通信的
❸ 如何在android開發使用ACTION
方法如下:
前面有用使用Intent來控制 Service
使用的參數是Service的類
Service的啟動/關閉還有另外一種方式來控制
通過Intent傳入Action的參數
在manifest中注冊一個Service並且設置一個action
java"><service
android:enabled="true"
android:exported="false"
android:name="com.services.sev.PlayService">
<intent-filter>
<actionandroid:name="com.example.codetest_1.action.startPlayService"/>
</intent-filter>
</service>
注意這個name的字元串
可以在Service類中增加一個欄位
publicstaticfinalStringACTION="com.example.codetest_1.action.startPlayService";
這樣 只需修改Intent的調用方法 就可以啟動/關閉Service了
Intentintent=newIntent();
intent.setAction(PlayService.ACTION);
this.startService(intent);
Intentintent=newIntent();
intent.setAction(PlayService.ACTION);
this.stopService(intent);
❹ 怎樣在程序中設置Android應用最開始運行的Activity
從一個Activity(界面)跳轉到另一個Activity時,需要使用到Intent來啟動Activity。
Intent在android中的定義為:public Intent (Context packageContext , Class<?> cls);
在Intent使用時,分為顯式調用和隱式調用:
顯式調用---直接調用Activity的Class類
例,Activity1調用Activity2
Intent intent = new Intent(this , Activity2.class);
startActivity(intent);
隱式調用---通過調用另一個Activity的action 來啟動另一個Activity
Activity1隱式調用Activity2時需要在AndroidManifest.xml文件中配置Activity2的action和category,具體添加下面的代碼到Activity2的定義中
<intent-filter>
<action android:name="myaction2"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="mycategory" />
</intent-filter>
接著同樣用intent來啟動Activity,代碼如下:
Intent intent = new Intent("myaction2");
startActivity(intent);
這樣就可以啟動Activity2
註:intent隱式調用Activity時會遇到多個Activity的intent-filter中的action和category相同時,android會先彈一個選擇界面的窗口,顯式要啟動的Activity列表,根據用戶選擇來啟動Activity,如Activity2和Activity3的action和category相同
<Activity android:name=".Activity2">
<intent-filter>
<action android:name="myaction2"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="myCategory" />
</intent-filter>
</Activity>
<Activity android:name=".Activity3">
<intent-filter>
<action android:name="myaction2"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="myCategory" />
</intent-filter>
</Activity>
啟動Activity代碼如下:
Intent intent = new("action2");
intent.addCategory("myCategory");
startActivity(intent);
這時就會彈出Acvity的選擇窗口,選擇啟動activity2還是activity3
❺ android怎麼實現開機自動啟動Service或app
Android手機在啟動的過程中會觸發一個Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED。
在這里我們可以通過構建一個廣播接收者來接收這個這個action
(1).
public class TextBroadcastReceiver extends BroadcastReceiver {
//重寫onReceive方法
@Override
public void onReceive(Context context, Intent intent) {
//後邊的XXX.class就是要啟動的服務
Intent service = new Intent(context,XXXclass);
context.startService(service);
Log.v("TAG", "開機自動服務自動啟動.....");
//啟動應用,參數為需要自動啟動的應用的包名
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
context.startActivity(intent );
}
}
(2):配置xml文件,在receiver接收這種添加intent-filter配置
<receiver android:name="TextBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
(3):添加許可權 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
❻ 如何使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開發怎麼讓app實現自啟動
Android中也可很方便的實現類似windows中的開機啟動。 方法很簡單,就是注冊一個BroadcastReceiver 去接收 actoin 為 android.intent.action.BOOT_COMPLETED 的消息,然後即可啟動Activity了。 首先在menifest 文件中添加許可權聲明,因為接收BOOT_COMPLETED消息需要RECEIVE_BOOT_COMPLETED 許可權 Xml代碼 1.<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 通過在menifest xml文件中配置的方式注冊一個Receiver Xml代碼 1.<receiver 2. android:name=".BootUpReceiver" 3. android:enabled="true" 4. android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > 5. <intent-filter> 6. <action android:name="android.intent.action.BOOT_COMPLETED" /> 7. 8. <category android:name="android.intent.category.DEFAULT" /> 9. </intent-filter> 10. </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" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 在Receiver的onReceive方法中啟動Activity Java代碼 1.public class BootUpReceiver extends BroadcastReceiver { 2. 3. @Override 4. public void onReceive(Context context, Intent intent) { 5. Intent i = new Intent(context, MyActivity.class); 6. i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 7. context.startActivity(i); 8. } 9.}
❽ 【轉】android如何實現開機自動啟動Service或app
Android手機在啟動的過程中會觸發一個Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED(記得只會觸發一次呀),在這里我們可以通過構建一個廣播接收者來接收這個這個action.下面我就來簡單寫以下實現的步驟:2. 第一步:首先創建一個廣播接收者,重構其抽象方法 onReceive(Context context, Intent intent),在其中啟動你想要啟動的Service或app。 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class BootBroadcastReceiver extends BroadcastReceiver { //重寫onReceive方法 @Override public void onReceive(Context context, Intent intent) { //後邊的XXX.class就是要啟動的服務 Intent service = new Intent(context,XXXclass); context.startService(service); Log.v("TAG", "開機自動服務自動啟動....."); //啟動應用,參數為需要自動啟動的應用的包名 Intent intent = getPackageManager().getLaunchIntentForPackage(packageName); context.startActivity(intent ); } } 第二步:配置xml文件,在receiver接收這種添加intent-filter配置 第三步:添加許可權 啟動APP: 因為做一個hotkey的項目,其中有幾個快捷鍵需要啟動系統自帶的browser和email。因為剛剛開始學習android,在網上找到啟動browser和email的方法都是利用ACTION_VIEW和SENDTO這樣的intent去啟動browser和email.問題來了:1.如果是這樣的話,啟動browser需要自己預設一個網址,然後調用瀏覽器打開改網址。2.啟動email,也是需要自己設定一個賬戶地址,才能調用email去發送。但是我只是需要打開程序,不想設定死這些data。
❾ android 怎麼自啟動應用
安裝自啟動:
要做這個功能有一個前提,那就是用戶的機器上已經裝過相應應用,也就是說只有升級APK的時候才可以這么干,因為要執行的功能需要程序的配合。
具體步驟如下:
首先要知道程序已經安裝完成,所以需要在程序中注冊一個廣播監聽(必須是靜態的,你懂的)apk安裝完成的action:"android.intent.action.PACKAGE_ADDED",在這個廣播的onReceive方法中監聽action,並通過intent.getDataString()方法判斷安裝程序的包名是否屬於自己的包名,如果是做下一步操作;
通過Intent顯式或者隱式的啟動你自己的程序。
建議:
最好不要這樣干,你要考慮一下用戶的感受,特別是那種自動安裝不需要點確認的時候,正在玩游戲、看視頻、看小說、用微信你自動打開一個應用
開機自啟動
android實現開機自啟動可能是移動操作系統中最簡單的了,只需要監聽一個開機啟動的Broadcast(廣播)即可。首先寫一個Receiver(即廣播監聽器),繼承BroadcastReceiver。
如下所示:
public class BootReceiver extends BroadcastReceiver {
private PendingIntent mAlarmSender;
@Override
public void onReceive(Context context, Intent intent) {
// 在這里干你想乾的事(啟動一個Service,Activity等),本例是啟動一個定時調度程序,每30分鍾啟動一個Service去更新數據
mAlarmSender = PendingIntent.getService(context, 0, new Intent(context,
RefreshDataService.class), 0);
long firstTime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) context
.getSystemService(Activity.ALARM_SERVICE);
am.cancel(mAlarmSender);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
30 * 60 * 1000, mAlarmSender);
}
}
接下來,只需要在應用程序配置文件AndroidManifest.xml中注冊這個Receiver來監聽系統啟動事件即可
如下所示:
<receiver android:name=".service.BootReceiver">
<intent-filter>
<!-- 系統啟動完成後會調用-->
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
</receiver>
❿ 求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>