124、@JavascriptInterface


targetSdkVersion 是設置希望的SDK版本,如果設置了此屬性,那么在程序執行時,如果目標設備的API版本正好等於此數值,他會告訴Android平台:此程序在此版本已經經過充分測,沒有問題。不必為此程序開啟兼容性檢查判斷的工作了。
也就是說,如果targetSdkVersion與目標設備的API版本相同時,運行效率可能會高一些。 
但是,這個設置僅僅是一個聲明、一個通知,不會有太實質的作用,
比如說,使用了targetSdkVersion這個SDK版本中的一個特性,但是這個特性在低版本中是不支持的,那么在低版本的API設備上運行程序時,可能會報錯:Java.lang.VerifyError。也就是說,此屬性不會幫你解決兼容性的測試問題。

 

js調用java的時候,如果設置了targetSdkVersion,當targetSdkVersion<17時沒問題,targetSdkVersion>=17時不成功

如果您在編寫HTML5應用,需要在JS代碼中訪問Java中的函數,則您會用到WebView的addJavascriptInterface()函數。因為安全問題,在Android4.2中(如果應用的android:targetSdkVersion數值為17+)JS只能訪問帶有 @JavascriptInterface注解的Java函數。

之前,任何Public的函數都可以在JS代碼中訪問,而Java對象繼承關系會導致很多Public的函數都可以在JS中訪問,其中一個重要的函數就是  getClass()。然后JS可以通過反射來訪問其他一些內容。通過引入 @JavascriptInterface注解,則在JS中只能訪問 @JavascriptInterface注解的函數。這樣就可以增強安全性。

如果您的應用android:targetSdkVersion數值為17或者大於17記得添加 @JavascriptInterface 注解。


免責聲明!

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



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