android scheme機制


1、scheme機制

(1)被調用的程序:

定義scheme和action
<activity android:name=".Main" android:label="@string/app_name">
<intent-filter>
<action android:name="net.blogjava.mobile.MYACTION" />
<data android:scheme="info" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>


處理其他應用傳遞過來的信息
// 獲得其他應用程序傳遞過來的數據
if (getIntent().getData() != null )
{
// 獲得Host,也就是info://后面的內容
String host = getIntent().getData().getHost();
Bundle bundle = getIntent().getExtras();
// 其他的應用程序會傳遞過來一個value值,在該應用程序中需要獲得這個值
String value = bundle.getString("value" );
……
}


(2)調用的方式:
// 需要使用Intent類的第2個參數指定Uri
Intent intent = new Intent("net.blogjava.mobile.MYACTION" , Uri
.parse("info://調用其他應用程序的Activity" ));
// 設置value屬性值
intent.putExtra("value" , "調用成功" );
// 調用ActionActivity中的Main
startActivity(intent);


(3)調用方可以通過packageManager.queryIntentActivities來判斷scheme是否有效
// Build the intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;

// Start an activity if it's safe
if (isIntentSafe) {
startActivity(mapIntent);
}


其他的進程間通信的機制:

Content Provider:對數據的增刪改查。
Content Provider提供了一種在多個應用程序之間數據共享的方式(跨進程共享數據)。應用程序可以利用Content Provider完成下面的工作
1. 查詢數據
2. 修改數據
3. 添加數據
4. 刪除數據

Broadcast:向對方的進程發送消息。
廣播(Broadcast)
廣播是一種被動跨進程通訊的方式。當某個程序向系統發送廣播時,其他的應用程序只能被動地接收廣播數據。這就象電台進行廣播一樣,聽眾只能被動地收聽,而不能主動與電台進行溝通。

AIDL服務:通過后台進程的方式提供訪問的接口,類似web service的方式,只不過AIDL服務的“web”是指本地的應用程序。
服務(Service)是android系統中非常重要的組件。Service可以脫離應用程序運行。也就是說,應用程序只起到一個啟動Service的作用。一但Service被啟動,就算應用程序關閉,Service仍然會在后台運行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM