當前位置:首頁 » 安卓系統 » android廣播實例

android廣播實例

發布時間: 2022-08-08 07:57:03

A. 12、注冊廣播有幾種方式,這些方式有何優缺點請談談Android引入廣播機制的用意。

  1. 注冊廣播的分類:靜態注冊和動態注冊。

    靜態注冊:在清單文件里直接注冊,從app開啟到app銷毀,一直在接收廣播,接收廣播時間長,但是接收廣播的優先順序低於動態注冊廣播。

    動態注冊:動態注冊,動態銷毀,從onCreate到取消注冊,期間接收廣播,接收廣播時間是短且可控,接收廣播的優先順序高。例如:

    發送廣播:
    Intent i = new Intent();
    i.setAction("ACTION_CLOSE");
    sendBroadcast(i);

    接受廣播:
    onCreate(){

    //注冊廣播的接受者
    IntentFilter filter = new IntentFilter();
    filter.addAction("ACTION_CLOSE_ACTIVITY");
    receiver = new InnerReceiver();
    registerReceiver(receiver, filter);
    }

    private class InnerReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    //TODO 當前Activity接收到廣播 需要做的事情
    }
    }
    }

    //注銷廣播

    @Override
    protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
    }


2.引入廣播的原因:

a) 不同的app之間傳信通用

b)發出一條指定,需要多個Activity都需要有反應


注意:以上僅供參考,如有疑問,請追問,謝謝。

B. android怎麼發送特定廣播的

起一個線程,每發一個廣播後就sleep一分鍾,如此循環。(或者接受系統的timechanged這個廣播,這個廣播好像一分鍾發一次)。

Android 在發送廣播時的方法 sendBroadcast(Intent)。

①:Intent myIntent = new Intent();——【創建Intent對象】

②:myIntent.setAction(String)——【設置一般的要執行的動作。參數:動作一個動作的名稱,如ACTION_VIEW。應用程序的具體行動,應與供應商的包名作為前綴。】

③:myIntent.putExtra(String,Object)——【廣播中額外發送的數據,String為自定義key,Object表示多種數據類型】

④:sendBroadcast(myIntent);——【發送廣播】

接收廣播

Android在接收廣播的方法是注冊一個廣播接收器 registerReceiver(MyReceiver,IntentFilter)。

①:首先創建MyReceiver類(類名自定義) 繼承 BroadcastReceiver類。——【創建廣播接收器】

②:在MyReceiver中重寫public void onReceive(Context context, Intent intent)方法。這個方法在接收到廣播後觸發。——【重寫處理方法】

③:在Activity或者Service啟動時 onCreate()、onStartCommand()等方法中實例化 MyReceiver類——【啟動時實例化廣播接收器】

④:IntentFilter filter = new IntentFilter();——【創建IntentFilter對象 意圖過濾器】

⑤:filter.addAction(String);——【在過濾器中加入過濾條件,說明接收什麼廣播】

⑥:registerReceiver(cmdReceiver, filter);——【注冊廣播,參數為(廣播接收器,意圖過濾器)】

C. android 開機後 發送的廣播有哪些

現在有應用A和應用B,我需要在A應用中啟動B應用中的某個Activity

實現:A應用中的Activity發送廣播,關鍵代碼如下:

String broadcastIntent = "com.example.android.notepad.NotesList";//自己自定義
Intent intent = new Intent(broadcastIntent);
this.sendBroadcast(intent);

B應用中需要一個BroadcastReceiver來接收廣播,取名TestReceiver繼承BroadcastReceiver重寫onReceive方法啟動一個activity,關鍵代碼如下:

if(intent.getAction().equals("com.example.android.notepad.NotesList")){
Intent noteList = new Intent(context,NotesList.class);
noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(noteList);
}

到這代碼就完成了,當然在AndroidManifest.xml中要對TestReceiver進行注冊,代碼如下:

<receiver android:name="TestReceiver">
<intent-filter>
<action android:name="com.example.android.notepad.NotesList"/>
</intent-filter>
</receiver>

這樣就完成了通過廣播啟動另一個應用Activity。

注意問題:Context中有一個startActivity方法,Activity繼承自Context,重載了startActivity方法。如果使用 Activity的startActivity方法,不會有任何限制,而如果使用Context的startActivity方法的話,就需要開啟一個新的task,解決辦法是,加一個flag,也就是這句noteList.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的作用。如果不添加這句,就會報android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity,Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

分類: Android

D. android 如何自定義常駐廣播

Android廣播機制指的是,在一個應用程序運行的時候可以自定義一個消息類型,讓相應的接收器去處理這個消息或者是系統消息,比如來電話了、來簡訊了、手機沒電了等等系統發送的消息。系統發送的消息也可以通過廣播的方式通知給應用程序,這樣子就避免了新開一個Thread去監聽系統或其他應用發送過來的消息的狀態。

Android廣播的分類:
1、 普通廣播:這種廣播可以依次傳遞給各個處理器去處理
2、 有序廣播:這種廣播在處理器端的處理順序是按照處理器的不同優先順序來區分的,高優先順序的處理器會優先截獲這個消息,並且可以將這個消息刪除
3、 粘性消息:粘性消息在發送後就一直存在於系統的消息容器裡面,等待對應的處理器去處理,如果暫時沒有處理器處理這個消息則一直在消息容器裡面處於等待狀態。
注意:普通廣播和粘性消息不同被截獲,而有序廣播是可以被截獲的

處理器的注冊:
1、 在代碼中用函數代碼動態的方式注冊。動態注冊的處理器必須用代碼動態的銷毀,每次用來處理消息的就一個實例對象
2、 在配置文件裡面靜態注冊,靜態注冊有個特點,那就是一旦注冊就會一直存在於系統裡面,無論應用是否關閉或開關機。(簡直就是一個流氓軟體病毒啊~)。靜態注冊每次有處理消息就由系統new一個處理器處理,並銷毀
下面具體看看Android廣播消息的發送、注冊、處理過程:
① 自定義處理器類:

public class MyBroadcastReceiver4 extends BroadcastReceiver {
public MyBroadcastReceiver4() {
System.out.println("創建了一個由registerReceiver()注冊的廣播接收器");
}

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
System.out.println("MyBroadcastReceiver4收到了一個" + action + "消息");
if (isOrderedBroadcast()) {
System.out.println("這是一個有序廣播,已經被攔截了。");
this.abortBroadcast();
} else {
System.out.println("這不是一個有序廣播");
}

Bundle bundle = intent.getExtras();
if (bundle != null) {
System.out.println("該消息攜帶的數據如下:");
// 獲得bundle的一個key的集合
Set set = bundle.keySet();
// 獲得上述集合的迭代器
Iterator iterator = set.iterator();
// 用迭代器遍歷集合
while (iterator.hasNext()) {
// 取得集合中的一個內容
String str = (String) iterator.next();
// 取得Bundle中的內容
System.out.println(str + "--->" + bundle.get(str));
}
} else {
System.out.println("該消息沒有攜帶數據");
}

Toast toast = Toast.makeText(context, "MyBroadcastReceiver4收到了一個"
+ action + "消息", Toast.LENGTH_LONG);
toast.show();
//將這個消息截獲(從消息容器移除)這樣其他處理器就沒法接收到這個消息
this.abortBroadcast();
}
}

② 發送廣播消息

⑴、 發送普通廣播:
// 發送一個普通消息
Intent intent = new Intent(); intent.setAction("asdfasdf");
Android_09_10Activity.this.sendBroadcast(intent);

⑵、 發送有序廣播:
// 發送一個有序消息
Intent intent = new Intent();
intent.setAction("asdfasdf"); Android_09_10Activity.this.sendOrderedBroadcast(intent,
null);
⑶、 發送粘性廣播:
// 發送一個粘性消息
Intent intent = new Intent();
intent.setAction("qwerqwer"); Android_09_10Activity.this.sendStickyBroadcast(intent);
③ 注冊廣播接收器
⑴動態注冊:
// 注冊一個廣播接收器
IntentFilter intentFilter = new IntentFilter("asdfasdf");
intentFilter.setPriority(0);
Android_09_10Activity.this.registerReceiver(mbr2,
intentFilter);
⑵靜態注冊:

<receiver android:name=".MyBroadcastReceiver4" >

<intent-filter android:priority="1000" >

<action android:name="android.intent.action.WALLPAPER_CHANGED" />

<action android:name="android.provider.Telephony.SMS_RECEIVED" />

<action android:name="android.intent.action.PHONE_STATE" />

<action android:name="android.intent.action.PACKAGE_REMOVED" />

//這一句比較特殊,是上面那個廣播消息特有的

<data android:scheme="package" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>

想發送粘性消息的時候必須在配置文件裡面獲取許可權:
<uses-permission android:name="android.permission.BROADCAST_STICKY" />

想用自定義處理器對系統廣播進行處理的話也必須在注冊文件裡面申明獲取許可權,比如:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

E. 簡述在android中如何發送廣播消息

1.發送廣播
Intent intent = new Intent(BroadcastAction);
Bundle bundle = new Bundle();
bundle.putString("***", SUCCESS);
bundle.putString("FullPathName", mFullPathName);
intent.putExtras(bundle);
sendBroadcast(intent);
2.在Activity中創建一個內部類MyBroadcastReceiver擴展BroadcastReceiver,並在其中實現onReceive方法。
3.在Activity中聲明一個MyBroadcastReceiver類型的成員變數,並注冊:
private MyBroadcastReceiver myBroadcastReceiver;
...
myBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(BroadcastAction);
registerReceiver(receiver, filter);
4.使用完後要記得釋放
unregisterReceiver(receiver);

註:1和2中的 BroadcastAction要是同一個Action

F. android在實現廣播方法

eclipse中斷是什麼個意思?程序報錯了沒?

這明顯是你在intent.getAction()這句打了斷點,運行的時候會進入debug模式,這是eclipse提示你進入debug模式的,不是什麼中斷啦

G. 注冊廣播有幾種方式,這些方式有何優缺點請談談Android引入廣播機制的用意。

android中,不同進程之間傳遞信息要用到廣播,可以有兩種方式來實現。
第一種方式:在Manifest.xml中注冊廣播,是一種比較推薦的方法,因為它不需要手動注銷廣播(如果廣播未注銷,程序退出時可能會出錯)。
具體實現在Manifest的application中添加:上面兩個android:name分別是廣播名和廣播的動作(這里的動作是表示系統啟動完成),如果要自己發送一個廣播,在代碼中為:
Intent i = new Intent(「android.intent.action.BOOT_COMPLETED」);
sendBroadcast(i);
這樣,廣播就發出去了,然後是接收。
接收可以新建一個類,繼承至BroadcastReceiver,也可以建一個BroadcastReceiver的實例,然後得寫onReceive方法,實現如下:
protected BroadcastReceiver mEvtReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(「android.intent.action.BOOT_COMPLETED」)) {
//Do something
}
}
};
第二種方式,直接在代碼中實現,但需要手動注冊注銷,實現如下:
IntentFilter filter = new IntentFilter();
filter.addAction(「android.intent.action.BOOT_COMPLETED」);
registerReceiver(mEvtReceiver, filter); //這時注冊了一個recevier ,名為mEvtReceiver,然後同樣用上面的方法以重寫onReceiver,
最後在程序的onDestroy中要注銷廣播,實現如下:
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mPlayerEvtReceiver);
}

H. Broadcast廣播可以應用於andrion應用程序有哪些場景

摘要 在 Android 裡面有各種各樣的廣播,比如電池的使用狀態,電話的接收和簡訊的接收都會產生一個廣播,應用程序開發者也可以監聽這些廣播並做出程序邏輯的處理。

I. android 注冊廣播時內容溢出怎麼解決

什麼是廣播?
在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。我們拿廣播電台來做個比方。我們平常使用收音機收音是這樣的:許許多多不同的廣播電台通過特定的頻率來發送他們的內容,而我們用戶只需要將頻率調成和廣播電台的一樣就可以收聽他們的內容了。Android中的廣播機制就和這個差不多的道理。
電台發送的內容是語音,而在Android中我們要發送的廣播內容是一個Intent。這個Intent中可以攜帶我們要傳送的數據。
電台通過大功率的發射器發送內容,而在Android中則是通過sendBroadcast這個方法來發送(很形象的名字吧)。
用戶通過調整到具體的電台頻率接受電台的內容。而在Android中要接受廣播中的內容則是通過注冊一個BroadCastReceiver來接收的。只有發送廣播的action和接收廣播的action相同,接受者才能接受這個廣播。

廣播有什麼用
其實,在什麼是廣播的第一句就已經說明了廣播有什麼用了。對了,籠統一點講就是用來傳輸數據的。具體一點說就是:
1.實現了不同的程序之間的數據傳輸與共享,因為只要是和發送廣播的action相同的接受者都能接受這個廣播。典型的應用就是android自帶的簡訊,電話等等廣播,只要我們實現了他們的action的廣播,那麼我們就能接收他們的數據了,以便做出一些處理。比如說攔截系統簡訊,攔截騷擾電話等等
2.起到了一個通知的作用,比如在service中要通知主程序,更新主程序的UI等。因為service是沒有界面的,所以不能直接獲得主程序中的控制項,這樣我們就只能在主程序中實現一個廣播接受者專門用來接受service發過來的數據和通知了。

Android廣播機制包含三個基本要素:
廣播(Broadcast)----- 用於發送廣播。
廣播接收器(BroadcastReceiver)----- 用於接收廣播。
意圖內容(Intent)----- 用於保存廣播相關信息的媒介。

Broadcast是一種廣泛應用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發出來的Broadcast進行過濾接受並響應的組件。

下面對廣播的過程進行詳細的描述:
首先在需要發送信息的地方,把要發送的信息和用於過濾的信息(如Action、Category)裝入一個Intent對象,然後通過調用Context.sendBroadcast()、Context.sendOrderBroadcast()或Context.sendstickyBroadcast()方法,把Intent對象以廣播的方式發出去。
當Intent發送以後,所有已經注冊的BroadcastReceiver會檢查注冊時的Intentfilter是否與發送的Intent相匹配,若匹配就會調用BroadcastReceiver的void onReceive(Context curContext, Intent broadcastMsg)方法。

廣播的生命周期:
廣播接收器僅在它執行這個方法時處於活躍狀態。當onRecever()返回後,它就變為失活狀態。
擁有一個活躍狀態的廣播接收器的進程被保護起來不會被殺死,但僅擁有失活狀態組件的進程則會在其他進程需要它所佔用的內存時被殺死。所以,如果響應一個廣播信息需要很長一段時間,我們一般會將其納入一個衍生的線程中去完成,而不是在主線程中去完成它,從而保證用戶交互過程的流暢性。

注冊BroadcastReceiver的兩種方法:
方式一,靜態的在AndroidManifest.xml中用<receiver>標簽聲明注冊,並在標簽內用<intent-filter>標簽注冊過濾器。
方式二,動態地在代碼中先定義並設置好一個IntentFilter對象,然後在需要注冊的地方調用Context.registerReceiver()方法,如果取消時就調用Context.unregisterReceiver()方法。如果用動態方式注冊的BroadcastReceiver的Context對象被銷毀時,BroadcastReceiver也就自動取消注冊了。
另外,若在使用sendBroadcast()的方法是指定了接收許可權,則只有在AndroidManifest.xml中用<uses-permission>標簽聲明了擁有此許可權的BroadcastReceiver才會有可能接收到發送來的Broadcast。同樣,若在注冊BroadcastReceiver時指定了可接收的Broadcast的許可權,則只有在保內的AndroidManifest.xml中用<uses-permission>標簽聲明了,擁有此許可權的Context對象所發送的Broadcast才能被這個BroadcastReceiver接收。
動態注冊:
IntentFilter intentFilter = new IntentFilter();
intentFilter.add(Action); //為BroadcastReceiver指定action,使之用於接收同action的廣播。
registerReceiver(BroadcastReceiver, intentFilter);
一般在onStart()中注冊,onStop()中取消。指定廣播目標Action:Intent intent = new Intent(action--String),指定了此action的receiver會接收此廣播。

這里用一個實例來看一下如何處理廣播事件
我們按照如下步驟來實現:
1、創建一個類繼承BroadcastReceiver類,復寫onReceive()方法
2、在AndroidManifest.xml文件中注冊BroadcastReceiver
3、構建Intent對象
4、調用sendBroadCast()方法發送廣播

J. android中什麼時候會選擇用廣播來進行線程間的通

Android 的廣播機制

在 Android
裡面有各種各樣的廣播,比如電池的使用狀態,電話的接收和簡訊的接收都會產生一個廣播,應用程序開發者也可以監聽這些廣播並做出程序邏輯的處理。下面我畫一張粗略的圖來幫助大家理解廣播的運行機制。

Android 中有各式各樣的廣播,各種廣播在Android 系統中運行,當系統/應用程序運行時便會向 Android 注冊各種廣播,Android
接收到廣播會便會判斷哪種廣播需要哪種事件,然後向不同需要事件的應用程序注冊事件,不同的廣播可能處理不同的事件也可能處理相同的廣播事件,這時就需要 Android
系統為我們做篩選。

案例分析:

一個經典的電話黑名單,首先通過將黑名單號碼保存在資料庫裡面,當來電時,我們接收到來電廣播並將黑名單號碼與資料庫中的某個數據做匹配,如果匹配的話則做出相應的處理,比如掛掉電話、比如靜音等等。。。

Demo 分析:

下面通過一個小DEMO 來講解一下廣播在Android
中如何編寫,在Demo中我們設置了一個按鈕為按鈕設置點擊監聽通過點擊發送廣播,在後台中接收到廣播並列印LOG信息。代碼如下:

BroadCastActivity 頁面代碼

public class BroadCastActivity extends Activity {

public static final String ACTION_INTENT_TEST =
"com.terry.broadcast.test";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button btn = (Button) findViewById(R.id.Button01);

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intent intent = new Intent(ACTION_INTENT_TEST);

sendBroadcast(intent);

}

});

}

}

接收器代碼如下:

public class myBroadCast extends BroadcastReceiver {

public myBroadCast() {

Log.v("BROADCAST_TAG", "myBroadCast");

}

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

Log.v("BROADCAST_TAG", "onReceive");

}

}

Android 廣播的生命周期

在上面的接收器中,繼承了BroadcastReceiver 並重寫了它的onReceive 並構造了一個函數,下面通過圖片來一步一步認識
Android 廣播的生命周期。當我點擊一下按鈕,它向Android 發送了一個廣播,如下圖:

這時我們再點擊一下按鈕,它還是會再向 Android 系統發送廣播,此時日誌信息如下:

下面本人畫一張圖像,描述了Android 中廣播的生命周期,其次它並不像Activity 一樣復雜,運行原理很簡單如下圖:

下面來看一下SDK給出的解釋:

大意為:如果一個廣播處理完onReceive 那麼系統將認定此對象將不再是一個活動的對象,也就會finished掉它。

至此,大家應該能明白 Android 的廣播生命周期的原理,代碼也不用多介紹,很簡單的一個發送廣播並處理廣播的Demo。

Android 如何判斷並篩選廣播?

前 面說過 Android 的廣播有各式各樣,那麼Android
系統是如何幫我們處理我們需要哪種廣播並為我們提供相應的廣播服務呢?這里有一點需要大家注意,每實現一個廣播接收類必須在我們應用程序中的 manifest
中顯式的註明哪一個類需要廣播,並為其設置過濾器,如下圖:

Tip:action 代表一個要執行的動作,在Andriod 中有很action 比如 ACTION_VIEW,ACTION_EDIT

那麼有些人會問了,如果我在一個廣播接收器中要處理多個動作呢?那要如何去處理?

在Android 的接收器中onReceive 以經為我們想到的,同樣的你必須在Intent-filter
裡面注冊該動作,可以是系統的廣播動作也可以是自己需要的廣播,之後你之需要在onReceive
方法中,通過intent.getAction()判斷傳進來的動作即可做出不同的處理,不同的動作。具體大家可以去嘗試測試一下。

小結:

在Android 中如果要發送一個廣播必須使用sendBroadCast 向系統發送對其感興趣的廣播接收器中。

使用廣播必須要有一個intent 對象必設置其action動作對象

使用廣播必須在配置文件中顯式的指明該廣播對象

每次接收廣播都會重新生成一個接收廣播的對象

在BroadCast 中盡量不要處理太多邏輯問題,建議復雜的邏輯交給Activity 或者 Service 去處理

Android廣播機制(兩種注冊方法)

在android下,要想接受廣播信息,那麼這個廣播接收器就得我們自己來實現了,我們可以繼承BroadcastReceiver,就可以有一個廣播接受器了。有個接受器還不夠,我們還得重寫BroadcastReceiver裡面的onReceiver方法,當來廣播的時候我們要干什麼,這就要我們自己來實現,不過我們可以搞一個信息防火牆。具體的代碼:

public class SmsBroadCastReceiver extends BroadcastReceiver

{

@Override

public void onReceive(Context context, Intent intent)

{

Bundle bundle = intent.getExtras();

Object[] object = (Object[])bundle.get("ps");

SmsMessage sms[]=new SmsMessage[object.length];

for(int i=0;i

{

sms[0] = SmsMessage.createFromP((byte[])object[i]);

Toast.makeText(context, "來自"+sms[i].getDisplayOriginatingAddress()+"
的消息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();

}

//終止廣播,在這里我們可以稍微處理,根據用戶輸入的號碼可以實現簡訊防火牆。

abortBroadcast();

}

}

當實現了廣播接收器,還要設置廣播接收器接收廣播信息的類型,這里是信息:android.provider.Telephony.SMS_RECEIVED

我們就可以把廣播接收器注冊到系統裡面,可以讓系統知道我們有個廣播接收器。這里有兩種,一種是代碼動態注冊:

//生成廣播處理

smsBroadCastReceiver = new SmsBroadCastReceiver();

//實例化過濾器並設置要過濾的廣播

IntentFilter intentFilter = new
IntentFilter("android.provider.Telephony.SMS_RECEIVED");

//注冊廣播

BroadCastReceiverActivity.this.registerReceiver(smsBroadCastReceiver,
intentFilter);

一種是在AndroidManifest.xml中配置廣播

package="spl.broadCastReceiver"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

兩種注冊類型的區別是:

1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。

2)第二種是常駐型,也就是說當應用程序關閉後,如果有信息廣播來,程序也會被系統調用自動運行。

BroadcastReceiver用於監聽被廣播的事件

必須被注冊,有兩種方法:

1、在應用程序的代碼中注冊

注冊BroadcastReceiver:

registerReceiver(receiver,filter);

取消注冊BroadcastReceiver:

unregisterReceiver(receiver);

當BroadcastReceiver更新UI,通常會使用這樣的方法注冊。啟動Activity時候注冊BroadcastReceiver,Activity不可見時候,取消注冊。

2、在androidmanifest.xml當中注冊

使用這樣的方法注冊弊端:它會始終處於活動狀態,畢竟是手機開發,cpu和電源資源比較少,一直處於活動耗費大,不利。

熱點內容
android設置權重 發布:2024-04-20 22:20:08 瀏覽:724
什麼手機安卓系統80 發布:2024-04-20 21:37:29 瀏覽:379
浙江萬里的伺服器地址 發布:2024-04-20 21:16:59 瀏覽:407
ndklinux下載 發布:2024-04-20 21:05:22 瀏覽:566
王者榮耀解壓資源包97 發布:2024-04-20 20:46:10 瀏覽:397
蘋果手機沒有密碼怎麼打開 發布:2024-04-20 20:45:25 瀏覽:93
如何用濃硝酸配置百分之2的硝酸 發布:2024-04-20 20:44:39 瀏覽:797
微信商城java源碼下載 發布:2024-04-20 20:27:35 瀏覽:121
用友軟體sql 發布:2024-04-20 20:10:01 瀏覽:933
python倒著循環 發布:2024-04-20 20:09:52 瀏覽:759