androidintent啟動
⑴ 安卓 怎麼通過intent啟動一個service 博客
第一步:首先創建一個廣播接收者,重構其抽象方法
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",
"開機自動服務自動啟動.....");
//啟動應用,參數為需要自動啟動的應用的包名
...展開第一步:首先創建一個廣播接收者,重構其抽象方法
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配置
<receiver
android:name="BootBroadcastReceiver">
<intent-filter>
<action
android:name="android.intent.action.BOOT_COMPLETED"></action>
<category
android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</receiver>
第三步:添加許可權
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED"
/>收起
⑵ 027android初級篇之Intent相關介紹
在Android中提供了Intent機制來協助Android應用間,組件間的交互與通訊,Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將 Intent傳遞給調用的組件,並完成組件的調用。
Intent可以用來啟動Activity,Service,Broadcasts。
Intent有以下幾個屬性:動作(Action),數據(Data),分類(Category),類型(Type),組件(Compent)以及擴展信(Extra)。
Intent類型分為顯式Intent(直接類型)、隱式Intent(間接類型)。官方建議使用隱式Intent。上述屬性中,component屬性為直接類型,其他均為間接類型。
相比與顯式Intent,隱式Intnet則含蓄了許多,它並不明確指出我們想要啟動哪一個活動,而是指定一系列更為抽象的action和category等信息,然後交由系統去分析這個Intent,並幫我們找出合適的活動去啟動。
Action要表達的是Intent要完成的動作,是字元串常量。
SDK中定義了一些標準的Action常量。使用它們可以用來啟動android系統的一些內置程序如相機,相片庫,打電話,等等。(具體可參考文章 009android初級篇之APP中使用系統相機相冊等集成應用 ).
即執行動作要操作的數據和傳遞到目標的附加信息
Category屬性是一個執行動作Action的附加信息。比如:CATEGORY_HOME則表示放回到Home界面,ALTERNATIVE_CATEGORY表示當前的Intent是一系列的可選動作中的一個。下表是SDK文檔中關於Category的信息
幾個常見的category如下:
Intent的Type屬性顯式指定Intent的數據類型(MIME)。一般Intent的數據類型能夠根據數據本身進行判定,但是通過設置這個屬性,可以強制採用顯式指定的類型而不再進行推導。
例如:一個可以處理圖片的目標Activity在其聲明中包含這樣的mimeType:
在使用Intent進行匹配時,我們可以使用setType(String type)或者setDataAndType(Uri data, String type)來設置mimeType。
目標組件的包或類名稱
在使用component進行匹配時,一般採用以下幾種形式:
其中,前兩種是用於匹配同一包內的目標,第三種是用於匹配其他包內的目標。需要注意的是,如果我們在Intent中指定了component屬性,系統將不會再對action、data/type、category進行匹配。
期望這個意圖的運行模式
可參考文章 025android初級篇之Android am命令的實現 中部分的FLAG的定義。
⑶ android中intent啟動Activity問題
答:一.利用intent(Activity1.this,***.class)方法
二.利用intent的ComponentName屬性直接指定包名方法 。這兩個實際表達的意思是一樣的,都是屬於顯示匹配,不經過IntentFilter過濾,現在的問題是能否使得這個源Acitivity.java類訪問目標Activity2.java類,這跟Activity2.java修飾符有關系。public的情況下,可以啟動同一個項目另一個包中的Activity.default情況下,能啟動同一個包中的。
三.Intent隱式匹配3種情況都可以。
望採納
⑷ 關於安卓intent啟動activity的幾種情況
我們一般寫的比較簡單的方法就是starActivity(new Intent(context,A.class)).這種啟動的方式很簡單,就是一個從當前界面跳轉到下一個activity界面。
首先我們先要說一個問題,當你有彈窗信息,或者通知欄裡面出現了通知,然後你點擊進去,不知道你有沒有在意,APP會在五秒鍾之後打開,當然,有的不會 大多數還是會的。現在我們就說一下這個問題
在谷歌的 Android API Guides 中,特意提醒開發者不要在後台啟動 activity,包括在 Service 和 BroadcastReceiver 中,這樣的設計是為了避免在用戶毫不知情的情況下突然中斷用戶正在進行的工作.
就是當通過 home 鍵將當前 activity 置於後台時,任何在後台startActivity 的操作都將會延遲 5 秒,除非該應用獲取了 "android.permission.STOP_APP_SWITCHES" 許可權.但是這個許可權是系統級別的許可權.
解決方法:
不能夠用傳統的startActivity來啟動Activity
Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
而是要用以下形式來啟動Activity:
Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, intent, 0);
try {
pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
OK,這種方式啟動activity,一般是用在有後台任務的時候
starActivityforResult(),裡面有兩個參數,一個是intent,還有一個是requestcode,當你啟動下一個界面的然後又關閉的時候,會得到一個返回值,這個返回值就是這個requestcode,你需要做的就是通過onActivityforResult()方法去進行對這個requestcode進行判斷,處理好相應的邏輯
這個文章是我睡前寫的,手機上面實在不好打字
⑸ 關於android.intent.action.MAIN在manifest里的使用
1、android.intent.action.MAIN決定應用程序是最先啟動的。
2、如果有多個activity都具有此許可權,那麼就應該用<intent-filter>來定義哪個activity在什麼情況下啟動。
3、如果在某個activity中不添加android.intent.action.MAIN有沒有影響這個沒有嘗試過,如果沒有應該是無法啟動的。理論上提示無許可權。
Android會根據manifest.xml是啟動相應的應用程序。
啟用應用程序的時候,會啟用對應的Activity,啟用的這些Activity也要在manifest.xml中聲明。
<intent-filter>在聲明的時候用到的,是在activity下一級,而<action>和<category>又是在<intent-filter>的下一級
<activity...
<intent-filter>...
<action...
<category...
</intent-filter>
</activity>
<intent-filter>就理解為過濾器,它指定了啟動應用程序的Intent對象的動作和類型
<actionandroid:name="android.intent.action.MAIN"/>
-->表示這個activity是主入口,換句話說,你只要啟動這個應用程序,就要首先調用這個activity
<categoryandroid:name="android.intent.category.LAUNCHER"/>
-->表示這個activity種類,要加到LAUNCHER程序列表裡。
(5)androidintent啟動擴展閱讀:
任何一個C++程序都包含一個main函數,這是規定。main函數由系統直接調用,是程序執行的入口。(和C++語言中一樣)
main函數與用戶自己定義的函數都是各自獨立的模塊,即函數不能嵌套定義,通俗的說,不能在一個函數的函數體內定義另一個函數,即使在main函數中也不行。但main函數可以對用戶自己定義的函數進行調用(但main函數只能由系統調用)。用戶自己定義多個函數時,這幾個用戶自己定義的函數之間都可以互相調用。
參考自拉理由:網路-main
⑹ android Intent啟動其它應用
可以帶別的東西。
需要com.rarlab.rar.MainActivity類的支持。
com.rarlab.rar.MainActivity可以在onCreate中通過getIntent來得到
傳入來的intent.
intent可以設置一些數據,比如Intent.putExtra("type","rar")
然後onCreate得到後,可以Intent.getStringExtra("type")