Android NDK開發學習(六):C調用java中的方法
首先說一下這一次的事例demo時在github上找到的,但是過后忘記了原鏈接了(實在抱歉),所以會在最后附上我上傳的下載鏈接。
閑言少敘,進入正題。
之前的介紹中就是很常見的java調用C代碼,但是實際應用中也存在反向調用。
1、先上運行效果

在界面上有三個Button,他們的點擊事件如下:
~~~
public class MainActivity extends Activity {
static{
System.loadLibrary("jni");
}
DataProvider dp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dp = new DataProvider();
}
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.call_void_method:
dp.callCcode();
break;
case R.id.call_string_parameter_method:
dp.callCcode1();
break;
case R.id.call_int_parameter_method:
dp.callCcode2();
break;
default:
break;
}
}
}
~~~
DataProvider類:
~~~
public class DataProvider {
public native void callCcode();
public native void callCcode1();
public native void callCcode2();
//C調用java中空方法 shulaing.han.ndk_callback.DataProvider
public void helloFromJava(){
System.out.println("hello from java");
}
//C調用java中的帶兩個int參數的方法
public int Add(int x,int y){
System.out.println("the add result is : " + (x + y));
return x + y;
}
//C調用java中參數為string的方法
public void printString(String s){
System.out.println("in java code :" + s);
}
}
~~~
C中callCcode方法:

執行結果:

類似的帶參數的方法也是一樣的原理。這里就不重復介紹了。
Demo下載鏈接 ??[點擊打開鏈接](http://download.csdn.net/detail/qq_17766199/9136515)
---------------------------------------------------------------------------------------------------------------------
這個NDK的系列就到這里了,因為我在學習中發現了NDK的一個專欄,上面講的很深入,所以我就不重復的制造
輪子了,附上鏈接 :[點擊打開鏈接](http://blog.csdn.net/column/details/blogjnindk.html)