2016-03-09 61 views
0

是否可以在純本機代碼中綁定java服務?實質上,在本地c代碼下調用這部分代碼如何在本地代碼中綁定java服務?

Intent i = new Intent(); 
i.setClassName("com.example.fooservice", 
    "com.example.fooservice.service"); 
bindService(i, clientConnection, Context.BIND_AUTO_CREATE); 

回答

1

不,不是直接。但是,您可以通過JNI調用您的NativeActivity

+0

我認爲對於棘手的部分是讓clientConnection的回調,是可行的通過JNI呢? –

+0

另外,爲什麼Android將不會允許本地代碼來訪問Java的Android服務..這似乎是一個非常合理的事情,如果你正在寫一本機應用程序做.. –

+0

Android的開發模式是使用運行時,它提供了一個標準化的方法爲應用程序進入和控制。即使是「原生」應用程序包在運行時(在'NativeActivity'是薄形式Activity'的'哪知道根據你的元數據調用本機代碼。)用Java編寫的框架提供的API也越來越廣泛和強大的比本地代碼。 'ServiceConnection'回調是棘手的,你不能直接在本地代碼中執行它。您必須擴展'NativeActivity'並將您自己的代碼寫入「hook」,以便通過JNI訪問您的本機代碼。 –

相關問題