android傳遞數據android_Android DATE: 2026-05-05 07:50:44
在A(yíng)ndroid開(kāi)發(fā)中,遞數傳遞數據是遞數很常見(jiàn)的需求,無(wú)論是遞數(shu)在同一個(gè)Activity之間,還是遞數在不同的Activ?ity、Fragment或者Service之間,遞數都需要進(jìn)行數據的遞數傳遞,本文將詳細介紹Android中的遞數數據傳遞方??式,包括Intent、遞數Bundle、遞數廣播接收器、遞數內容提供器等。遞數
(圖片來(lái)源網(wǎng)絡(luò ),遞數侵刪)1、遞數Intent
Intent是遞數Andro??id中用于實(shí)現組件之間通信的一種機制,可以用于啟動(dòng)Activity、遞數ヽ(′ー`)ノ啟動(dòng)服務(wù)、發(fā)送廣??播等,通過(guò)Intent,我們可以在不同組件之間傳遞數據。
(1)基本用法
Intent的基本用法如下:??
Intent in??tent = new Intent(this, TargetActiv??ity.clas(′;ω;`)s);intent.putExtra("key", "value");startActivity(intent);(2)獲取數據
在目標Activity中,??可以通過(guò)??以下方式獲取數據:
Intent intent = getIntent();String value = intent.getStringExtra("key");2、Bundle
Bundle bundle = new Bundle();buヽ(′ー`)ノndle.putString("key", "value");將Bundle傳遞給目標Activity:
Intent intent = new Intent(this, TargetActivity??.class);intent.putExtra("bundle_key", bundle);startActivity(intent);(2)獲取數據
在目標Activity中,可以通過(guò)以下方式獲取數據:
Bundle bun??dle = getIntent().getBundleExtra("bundle_key");Str(′ω`)ing val??ue = bundle.getString("key");3、廣播接收器
廣播接收??器是Android中用于接收系統或應用發(fā)送的廣播的一種機制,通過(guò)廣播接收??器,我們可以在不(bu)同組件之間傳遞數據。
(1)注冊廣播接收器
在目標Activity中注冊廣播接收器:
publi??c class MyReceiver extends Broadc??astReceiver { @Override public void onReceive(Context context, Intent intent) { // 處理接收到的廣播數據 }}在A(yíng)ndroidManifest.xml中注冊廣播接收器:
<receiver android:name=&quo??t;.??My(╥_╥)Receiver"> <intentfilter> <action android:name="com.example.broadca(′;ω;`)st.MY_BRO(°o°)ADCAST&( ?▽?)quot; /> </inte??ntfilter></(′?_?`)receiver>
在源Activity中發(fā)送廣播并傳遞數(shu)據:
In???tent intent = new Intent("com.example.broadc(°o°)ast.MY_BROADCAST");intent.putExtra("key", "va(′?ω?`)lue");sendBroadcast(intent);4、內容提(ti)供器
內容提供器(ContentProvider)是Android中用于在(′▽?zhuān)?)不同應用程序之間共享數據的一種機制,通過(guò)內容提供器,我們可以在不同組件之間傳遞數據。
(??1)創(chuàng )建內容提供器并定義數據表和列信息:
public class?? MyProvider extends ContentProvider { private static final String AUTHORITY = "com.example.provider";ヽ(′ー`)ノ private static final String TABLE_NAME = "my_table"; private static final String COLUMN_NAME = "nam??e"; private static final String COLUMN_AGE = "age"; private stati??c final int DATABASE_VERSION = 1; private static final Strin??g DATABASE_NAME = "my_database"; private static final String QUERY = "SELECT * FROM " + TABLE_NAME; private static final String[] PROJECTION = { COLUMN_NA(╬?益?)ME, COLUMN_AGE};}(2)實(shí)現內容提供器的增刪改查方法:
@Override public Cursor query(Uri uri, String[] proj(?⊿?)ection, String selection, String[] selectionArgs, String sortOrder) { }@Override public int update(Uri uri, ContentVa??lues values, String selectio??n, String[] selectionArgs) { }@Override public(??ヮ?)?*:??? Uri insert(Uri uri, ContentValues values) { }@Override public int delete(Uri?? uri,?? String selection, String[] selectionArgs) { }@Override publi??c String getType(Uri uri) { re??turn nu┐(′?`)┌l(fā)l; } // v4版本需要實(shí)現此方法,返回MIME類(lèi)(lei)型字符串,否則會(huì )報錯;v7及以上版本不需要??實(shí)現此方法,返回null即可。(3)在A(yíng)ndroidMa??┐(′?`)┌nifest.xml中注冊?xún)热萏峁┢鳎?/p>
<adb shell con??tent providers grantreadpermission com.examp(′_ゝ`)le.provider grantwritepermissioヽ(′?`)ノn com.example.provider > /dev/null 2>&1 & # 根據實(shí)際包名替換com.example.provider adb shell am broadcast a com.example.provider.CO??NTENT_PROVIDER_??CHANGED ei android.intent.extras.REFERRE??(???)R true(′?`) # 根據實(shí)際包名替換com.examp???le.provider adb shell dumpsys paヽ(′ー`)ノckage com.example.provider # 根據實(shí)際包名替換com.example.provider adb shell conten??t providers ungrant com.example.provider # 根(gen)據實(shí)際包名替換com.example.provider adb shell am forcestop com.example.provider # 根據實(shí)際包名替換com.example.provider adb shell am startservice n com.example.provider/com.exam??ple.provider.MyService # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input tap 500 500 # 根據(ju)實(shí)際分辨率替換500 adb shell input tap 500 500 # 根據實(shí)際分辨率替換500 adb she??ll input tap 500 500 # 根據實(shí)際分辨率替換500 adb shell inpu??t tap 500 500 # 根據實(shí)際分辨率替換500 adb shell input tap 500 500 # 根據實(shí)際分辨率替換500 adb shell input tap 500?? 500 # 根據實(shí)際分辨率替換500 adb shell input tap 500 500 # 根據實(shí)際??分辨率替換500 adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.examplヾ(^-^)ノe.provider adb shell am startservice n com.example??.provide??r/com.example.provider.MyService # 根據實(shí)際包名??替換com.example.provider adb shell input keyeven??t 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替??換com.example.provider adb shell input keyevent 82 # 根據實(shí)際包名替換com.example.provider adb shell input keyevent 82?? # 根據實(shí)際包名替換com.example.provider adb shell inpu(′?`)t keyevent 82 # 根據實(shí)際包名替換com
