android intent 跳转卡顿_Intent七大属性
一、ComponentName:組件名,用于顯示跳轉
啟動方式:
Intent intent =new Intent(); ComponentName component=new ComponentName(this, TwoActivity.class); intent.setComponent(component); startActivity(intent);等價于:
Intent intent =new Intent(this, TwoActivity.class); startActivity(intent);等價于:
Intent intent =new Intent(); intent.setClass(this,TwoActivity.class); startActivity(intent);等價于:
Intent intent =new Intent();//顯式跳轉到其他應用的界面的話,如果這個界面注冊了intent-filter的話,就不需要設置exported屬性,如果沒有注冊過intent-filter,需要將exported屬性設置為true,否則會出現權限異常,,可實現從本程序中啟動其它程序的Activity
intent.setClassName(this,"com.1000phone.activity.TestActivity"); startActivity(intent);二、Action、Category 屬性與intent-filter配置:
1、action屬性:Intent通過定義Action屬性(其實就是定義一段自定義的字符串),這樣就可以把Intent與具體的某個Activity分離。
常用Action屬性常量:
ACTION_MAIN:(android.intent.action.MAIN)Android程序入口。每個Android應用必須且只能包含一個此類型的Action聲明。【如果設置多個,則哪個在前,執行哪個。】
ACTION_VIEW: (android.intent.action.VIEW) 顯示指定數據。
ACTION_EDIT: (android.intent.action.EDIT) 編輯指定數據。
ACTION_DIAL: (android.intent.action.DIAL) 顯示撥號面板。
ACTION_CALL: (android.intent.action.CALL) 直接呼叫Data中所帶的號碼。
ACTION_ANSWER: (android.intent.action.ANSWER) 接聽來電。
ACTION_SEND: (android.intent.action.SEND) 向其他人發送數據(例如:彩信/email)。
ACTION_SENDTO: (android.intent.action.SENDTO) 向其他人發送短信。
ACTION_SEARCH: (android.intent.action.SEARCH) 執行搜索。
ACTION_GET_CONTENT:(android.intent.action.GET_CONTENT) 讓用戶選擇數據,并返回所選數據。
2、category屬性:提供將要執行的action的額外信息,一般在隱式地啟動activity時需要用到
常見的category如下:
CATEGORY_APP_BROWSER 和ACTION_MAIN一起使用,用來啟動瀏覽器應用程序
CATEGORY_APP_CALCULATOR 和ACTION_MAIN一起使用,用來啟動計算器應用程序
CATEGORY_APP_CALENDAR 和ACTION_MAIN一起使用,用來啟動日歷應用程序
CATEGORY_APP_CONTACTS 和ACTION_MAIN一起使用,用來啟動聯系人應用程序
CATEGORY_APP_EMAIL 和ACTION_MAIN一起使用,用來啟動郵件應用程序
CATEGORY_APP_GALLERY 和ACTION_MAIN一起使用,用來啟動圖庫應用程序
CATEGORY_APP_MAPS 和ACTION_MAIN一起使用,用來啟動地圖應用程序
CATEGORY_APP_MESSAGING 和ACTION_MAIN一起使用,用來啟動短信應用程序
CATEGORY_APP_MUSIC 和ACTION_MAIN一起使用,用來啟動音樂應用程序
CATEGORY_BROWSABLE 能夠被瀏覽器安全調用的activity必須支持這個category
CATEGORY_DEFAULT Android默認的執行方式,按照普通的Action方式執行。
CATEGORY_HOME 主activity,當Android程序啟動時,它是第一個顯示的
//android的home界面一般是主屏幕
CATEGORY_LAUNCHER 點擊桌面圖標時出現在最上面,默認啟動Activity
示例代碼:
三、Data屬性
1.Data的功能:
用于添加數據。通常是啟動某個系統程序或其他程序,帶給此程序的信息。Data屬性通常用于向Action屬性提供操作的數據。Data屬性的值是個Uri對象。
Uri的格式如下:scheme://host:port /path http://127.0.0.1:8080/webtest/
2.系統內置的data屬性常量:
tel:// //可以省略 號碼數據格式,后跟電話號碼。
smsto: 不能加// 短息數據格式,后跟短信接收號碼。
content:// 內容數據格式,后跟需要讀取的內容。----Content Provider
file:// 文件數據格式,后跟文件路徑。
1.瀏覽網頁
Uri uri = Uri.parse("https://www.baidu.com");//瀏覽器 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); startActivity(intent);2.撥打電話
Uri uri = Uri.parse("tel:xxxxxx"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it); <uses-permission android:name="android.permission.CALL_PHONE" /> //加權限 Uri uri = Uri.parse("tel:110"); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(intent);3.調用發短信的程序
Uri smsToUri = Uri.parse("smsto:10000"); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); intent.putExtra("sms_body", smsBody); startActivity(intent);四、Type屬性
1.功能:
Type屬性用于指定Data所指定的Uri對應的MIME類型。MIME只要符合“abc /xyz”這樣的字符串格式即可。
2.Intent利用Action、Data和Type屬性啟動Android系統內置組件的代碼:
查看圖片:
播放音頻:
五、Extra屬性
1.功能:
通過intent.putExtra(鍵, 值)的形式在多個Activity之間進行數據交換。
2.Intent 利用Action、Data和Type、Extra屬性啟動Android系統內置組件的代碼:
調用發送短信的程序
Intent intent = new Intent(); intent.setAction(Intent.ACTION_SENDTO); Uri uri = Uri.parse("smsto:13343333433"); intent.setData(uri); intent.putExtra("sms_body", "已經編輯好的短信內容...."); startActivity(intent);六、Flags屬性
Intent 可調用addFlags()方法來為Intent 添加控制標記。
1 、FLAG_ ACTIVITY_CLEAR_TOP:(效果同Activity LaunchMode的singleTask)
B的啟動設置了flag A B C B B -->A
如果在棧中已經有該Activity的實例,就重用該實例。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移除棧。如果棧中不存在該實例,將會創建新的實例放入棧中。
2 、FLAG_ACTIVITY_SINGLE_TOP:(效果同Activity L aunchMode的singleTop)
如果在任務的棧頂正好存在該Activity的實例, 就重用該實例,而不會創建新的Activity 對象。
A B C B B C C->B->C->B->A
3、FLAG_ACTIVITY_NEW_TASK 當在service或者BroadcastReceiver中啟動一個Activity時調需要添加這個flag。區別singleInstace 相同點是都是存在單獨的任務棧中,但是singleInstace 是保證設置的activity只有一個實例,FLAG_ACTIVITY_NEW_TASK 不保證啟動的activity是只有一個實例的 有可能在同一個task中有多個實例
4、FLAG_ACTIVITY_NO_ANIATION :控制啟動Activity時不使用過渡動畫
5、FLAG_ACTIVITY_NO_HISTORY:控制被啟動的Activity將不會保留在Activity棧中。只要有新界面啟動,該FLAG_ACTIVITY_NO_HISTORY的activity就會被清除
A B C B C C-> C-> A
6.uninstall apk
Uri uri = Uri.fromParts("package", strPackageName, null); Intent it = new Intent(Intent.ACTION_DELETE, uri); startActivity(it);7.install apk
//點擊安裝apk
public void install(View view){//獲取 ui.apk路徑//獲取Sdcard路徑:/mnt/shell/exzdgfd/0String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"ui.apk";//安裝apkinstallApk(path); } /*** 安裝apk* * @param url*/ private void installApk(String apkFilePath) {File apkfile = new File(apkFilePath);if (!apkfile.exists()) {return;}Intent i = new Intent(Intent.ACTION_VIEW);i.setDataAndType(Uri.parse("file://" + apkFilePath),"application/vnd.android.package-archive");startActivity(i); }8.啟動Home界面
Intent mIntent = new Intent(Intent.ACTION_MAIN);mIntent.addCategory(Intent.CATEGORY_HOME);startActivity(mIntent);總結
以上是生活随笔為你收集整理的android intent 跳转卡顿_Intent七大属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 群晖如何建php网站_群晖webstat
- 下一篇: mongodb启动成功连不上_MySQL