Android实现js及webview交互之在html页面中调用系统摄像头


http://blog.csdn.net/angel20082008/article/details/20689229

直接上代码,代码里面有注释:
1. 首先在Manifest.xml中添加如下权限:
    <!-- 访问网络权限  -->
<div><span class="pln">    
</span><span class="pun"><</span><span class="pln">uses</span><span class="pun">-</span><span class="pln">permission android</span><span class="pun">:</span><span class="pln">name</span><span class="pun">=</span><span class="str">"android.permission.INTERNET"</span><span class="pun">/></span></div><div><span><span class="pln">	</span></span><span class="pun"><!--</span><span class="pln"> </span><span class="pun">调用摄像头的权限</span><span class="pln"> </span><span class="pun">--></span></div><div><span class="pun"> </span><span class="pln">   </span><span class="pun"><</span><span class="pln">uses</span><span class="pun">-</span><span class="pln">permission android</span><span class="pun">:</span><span class="pln">name</span><span class="pun">=</span><span class="str">"android.permission.CAMERA"</span><span class="pun">/></span></div><div><span><span class="pln">	</span></span><span class="pun"><!--</span><span class="pln"> </span><span class="pun">文件系统权限</span><span class="pln">  --></span></div><div><span><span class="pln">	</span></span><span class="pun"><</span><span class="pln">uses</span><span class="pun">-</span><span class="pln">permission android</span><span class="pun">:</span><span class="pln">name</span><span class="pun">=</span><span class="str">"android.permission.MOUNT_UNMOUNT_FILESYSTEMS"</span><span class="pun">/></span></div><div><span><span class="pln">	</span></span><span class="pun"><!--</span><span class="pln"> SD</span><span class="pun">卡写权限</span><span class="pln"> </span><span class="pun">--></span></div><div><span class="pun"> </span><span class="pln">   </span><span class="pun"><</span><span class="pln">uses</span><span class="pun">-</span><span class="pln">permission android</span><span class="pun">:</span><span class="pln">name</span><span class="pun">=</span><span class="str">"android.permission.WRITE_EXTERNAL_STORAGE"</span><span class="pun">/></span></div>

2. 编写index.html放在android项目下的assests目录下
index.html:
<div><span class="tag"><html></span></div><div><span class="tag"><head></span></div><div><span class="tag"><title></span><span class="pln">Webview capture testing...</span><span class="tag"></title></span></div><div><span class="tag"><script</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/javascript"</span><span class="tag">></span></div><div>
</div><div><span><span class="pln">	</span></span><span class="com">//android中调用js方法</span></div><div><span><span class="com">	</span></span><span class="com">function wave() {</span></div><div><span><span class="com">		</span></span><span class="com">alert('cc2');</span></div><div><span><span class="com">	</span></span><span class="com">    document.getElementById("droid").innerHTML ="android_waving.png";</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div><span><span class="com">	</span></span></div><div><span><span class="com">	</span></span><span class="com">//android中调用js方法2,并更id为"droid"的span标签的值及新刚拍的照片显示到"pic0"里</span></div><div><span><span class="com">	</span></span><span class="com">function wave2(name) {</span></div><div><span><span class="com">		</span></span><span class="com">alert(name);</span></div><div><span><span class="com">		</span></span><span class="com"> document.getElementById("droid").innerHTML = "Photopath: " + name;</span></div><div><span><span class="com">		</span></span><span class="com"> document.getElementById("pic0").src=name;</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div><span><span class="com">	</span></span></div><div><span><span class="com">	</span></span><span class="com">//html的点击事件,并通过"window.demo.clickOnAndroid"触发android中的clickOnAndroid方法</span></div><div><span><span class="com">	</span></span><span class="com">function clickOnHtml () {</span></div><div><span><span class="com">		</span></span><span class="com">var fileName = window.demo.clickOnAndroid();</span></div><div><span><span class="com">		</span></span><span class="com">//wave2(fileName);</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div><span><span class="com">	</span></span></div><div><span><span class="com">	</span></span><span class="com">//</span></div><div><span><span class="com">	</span></span><span class="com">function revert() {</span></div><div><span><span class="com">		</span></span><span class="com">alert('cc');</span></div><div><span><span class="com">		</span></span><span class="com">document.getElementById("droid").innerHTML ="aa2";</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div>
</div><div><span class="tag"></script></span></div><div><span class="tag"><style</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="tag">></span></div><div><span class="pln">body</span><span class="pun">{</span></div><div><span class="pln">font</span><span class="pun">:</span><span class="lit">14px</span><span class="pun">;</span></div><div><span class="pln">color</span><span class="pun">:</span><span class="com">#333;</span></div><div><span class="com">line-height: 1.8em;</span></div><div><span class="com">margin: 0;</span></div><div><span class="com">padding: 0;</span></div><div><span class="com">width:480px;</span></div><div><span class="com">}</span></div><div><span class="com">html{</span></div><div><span class="com">outline: none;</span></div><div><span class="com">hide-focus:expression(this.hideFocus=true);</span></div><div><span class="com">}</span></div><div><span class="tag"></style></span></div><div><span class="tag"></head></span></div><div><span class="tag"><body></span></div><div><span><span class="pln">	</span></span><span class="tag"><div></span></div><div><span><span class="pln">		</span></span><span class="tag"><li></span></div><div><span><span class="pln">			</span></span><span class="tag"><p></span><span class="pln">Here is the funtion to TakePhoto in html</span><span class="tag"></p></span></div><div><span><span class="pln">			</span></span><span class="com"><!-- 通过"window.demo.clickOnAndroid"触发android中的clickOnAndroid方法 --></span></div><div><span><span class="pln">			</span></span><span class="tag"><a</span><span class="pln"> </span><span class="atn">onClick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">window</span><span class="pun">.</span><span class="pln">demo</span><span class="pun">.</span><span class="pln">clickOnAndroid</span><span class="pun">()</span><span class="atv">"</span><span class="tag">></span><span class="pln">TakePhoto</span><span class="tag"></a><br/></span></div><div><span><span class="pln">			</span></span><span class="tag"><span</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">'droid'</span><span class="tag">></span><span class="pln">Photopath:</span><span class="tag"></span></span></div><div><span><span class="pln">			</span></span><span class="tag"><br/></span></div><div><span><span class="pln">			</span></span><span class="tag"><br/></span></div><div><span><span class="pln">			</span></span><span class="tag"><p></span><span class="pln">Here is the funtion to revert in html</span><span class="tag"></p></span></div><div><span><span class="pln">			</span></span><span class="tag"><input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">revert</span><span class="pun">();</span><span class="atv">"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Revert"</span><span class="pln"> </span><span class="tag">/></span><span class="pln"> </span><span class="tag"><br/></span></div><div><span><span class="pln">			</span></span><span class="tag"><input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">javascript</span><span class="pun">:</span><span class="pln">window</span><span class="pun">.</span><span class="pln">top</span><span class="pun">.</span><span class="pln">location</span><span class="pun">.</span><span class="pln">reload</span><span class="pun">()</span><span class="atv">"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Refresh"</span><span class="pln"> </span><span class="tag">/></span></div><div><span><span class="pln">		</span></span><span class="tag"></li></span></div><div><span><span class="pln">	</span></span><span class="tag"></div></span></div><div><span><span class="pln">	</span></span><span class="tag"><div></span></div><div><span><span class="pln">		</span></span><span class="tag"><p</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"picpath"</span><span class="tag">></span><span class="pln">PhotoPath</span><span class="tag"></p></span></div><div><span><span class="pln">		</span></span><span class="tag"><img</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"ddd"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"pic0"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"200"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"/storage/sdcard0/webview_camera/testimg23.8156950140954181.jpg"</span><span class="pln"> </span><span class="tag">/></span></div><div><span><span class="pln">	</span></span><span class="tag"></div></span></div><div><span class="tag"></body></span></div><div><span class="tag"></html></span></div>

3.编写Activity的布局activity_camera_webview.xml
<div><span class="tag"><RelativeLayout</span><span class="pln"> </span><span class="atn">xmlns:android</span><span class="pun">=</span><span class="atv">"http://schemas.android.com/apk/res/android"</span></div><div><span class="pln">    </span><span class="atn">xmlns:tools</span><span class="pun">=</span><span class="atv">"http://schemas.android.com/tools"</span></div><div><span class="pln">    </span><span class="atn">android:layout_width</span><span class="pun">=</span><span class="atv">"match_parent"</span></div><div><span class="pln">    </span><span class="atn">android:layout_height</span><span class="pun">=</span><span class="atv">"match_parent"</span></div><div><span class="pln">    </span><span class="atn">android:paddingBottom</span><span class="pun">=</span><span class="atv">"@dimen/activity_vertical_margin"</span></div><div><span class="pln">    </span><span class="atn">android:paddingLeft</span><span class="pun">=</span><span class="atv">"@dimen/activity_horizontal_margin"</span></div><div><span class="pln">    </span><span class="atn">android:paddingRight</span><span class="pun">=</span><span class="atv">"@dimen/activity_horizontal_margin"</span></div><div><span class="pln">    </span><span class="atn">android:paddingTop</span><span class="pun">=</span><span class="atv">"@dimen/activity_vertical_margin"</span></div><div><span class="pln">    </span><span class="atn">tools:context</span><span class="pun">=</span><span class="atv">".CameraWebviewActivity"</span><span class="pln"> </span><span class="tag">></span></div><div><span><span class="pln">	</span></span></div><div><span class="pln">    </span><span class="tag"><Button</span><span class="pln"> </span></div><div><span class="pln">        </span><span class="atn">android:id</span><span class="pun">=</span><span class="atv">"@+id/bt"</span></div><div><span class="pln">        </span><span class="atn">android:layout_width</span><span class="pun">=</span><span class="atv">"wrap_content"</span></div><div><span class="pln">        </span><span class="atn">android:layout_height</span><span class="pun">=</span><span class="atv">"wrap_content"</span></div><div><span class="pln">        </span><span class="atn">android:text</span><span class="pun">=</span><span class="atv">"Camera"</span></div><div><span class="pln">        </span><span class="atn">android:layout_alignParentTop</span><span class="pun">=</span><span class="atv">"true"</span></div><div><span class="pln">        </span><span class="tag">/></span></div><div><span class="pln">    </span></div><div><span class="pln">    </span><span class="tag"><WebView</span></div><div><span class="pln">        </span><span class="atn">android:id</span><span class="pun">=</span><span class="atv">"@+id/wv"</span></div><div><span class="pln">        </span><span class="atn">android:layout_width</span><span class="pun">=</span><span class="atv">"fill_parent"</span></div><div><span class="pln">        </span><span class="atn">android:layout_height</span><span class="pun">=</span><span class="atv">"match_parent"</span></div><div><span class="pln">        </span><span class="atn">android:layout_below</span><span class="pun">=</span><span class="atv">"@+id/bt"</span></div><div><span class="pln">         </span><span class="tag">/></span></div><div>
</div><div><span class="tag"></RelativeLayout></span></div>

4. 编写activity
<div><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">CameraWebviewActivity</span><span class="pln"> </span><span class="kwd">extends</span><span class="pln"> </span><span class="typ">Activity</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">	</span></span></div><div><span><span class="pln">	</span></span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> TAG </span><span class="pun">=</span><span class="pln"> </span><span class="str">"CameraWebviewActivity"</span><span class="pun">;</span></div><div><span><span class="pln">	</span></span></div><div><span><span class="pln">	</span></span><span class="kwd">private</span><span class="pln"> </span><span class="typ">Button</span><span class="pln"> bt</span><span class="pun">;</span></div><div><span><span class="pln">	</span></span><span class="kwd">private</span><span class="pln"> </span><span class="typ">WebView</span><span class="pln"> wv</span><span class="pun">;</span></div><div><span><span class="pln">	</span></span><span class="kwd">public</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> fileFullName</span><span class="pun">;</span><span class="com">//照相后的照片的全整路径</span></div><div><span><span class="com">	</span></span><span class="com">private boolean fromTakePhoto; //是否是从摄像界面返回的webview</span></div><div>
</div><div><span><span class="pln">	</span></span><span class="lit">@Override</span></div><div><span><span class="pln">	</span></span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onCreate</span><span class="pun">(</span><span class="typ">Bundle</span><span class="pln"> savedInstanceState</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">		</span></span><span class="kwd">super</span><span class="pun">.</span><span class="pln">onCreate</span><span class="pun">(</span><span class="pln">savedInstanceState</span><span class="pun">);</span></div><div><span><span class="pln">		</span></span><span class="pln">setContentView</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">layout</span><span class="pun">.</span><span class="pln">activity_camera_webview</span><span class="pun">);</span></div><div><span><span class="pln">		</span></span><span class="pln">initViews</span><span class="pun">();</span></div><div><span><span class="pln">	</span></span><span class="pun">}</span></div><div><span><span class="pln">	</span></span></div><div><span><span class="pln">	</span></span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> initViews</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">		</span></span></div><div><span><span class="pln">		</span></span><span class="pln">bt </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Button</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">bt</span><span class="pun">);</span></div><div><span><span class="pln">		</span></span><span class="pln">bt</span><span class="pun">.</span><span class="pln">setOnClickListener</span><span class="pun">(</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OnClickListener</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">			</span></span><span class="lit">@Override</span></div><div><span><span class="pln">			</span></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onClick</span><span class="pun">(</span><span class="typ">View</span><span class="pln"> v</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">				</span></span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"----------------"</span><span class="pun">);</span></div><div><span><span class="pln">				</span></span><span class="pln">takePhoto</span><span class="pun">(</span><span class="pln"> </span><span class="typ">Math</span><span class="pun">.</span><span class="pln">random</span><span class="pun">()*</span><span class="lit">1000</span><span class="pun">+</span><span class="lit">1</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">".jpg"</span><span class="pun">);</span></div><div><span><span class="pln">			</span></span><span class="pun">}</span></div><div><span><span class="pln">		</span></span><span class="pun">});</span></div><div><span><span class="pln">		</span></span></div><div><span><span class="pln">		</span></span><span class="pln">wv </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">WebView</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">wv</span><span class="pun">);</span></div><div><span><span class="pln">		</span></span><span class="typ">WebSettings</span><span class="pln"> setting </span><span class="pun">=</span><span class="pln"> wv</span><span class="pun">.</span><span class="pln">getSettings</span><span class="pun">();</span></div><div><span><span class="pln">		</span></span><span class="pln">setting</span><span class="pun">.</span><span class="pln">setJavaScriptEnabled</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span></div><div><span><span class="pln">		</span></span><span class="pln">wv</span><span class="pun">.</span><span class="pln">setWebViewClient</span><span class="pun">(</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">WebViewClient</span><span class="pun">(){</span></div><div><span><span class="pln">			</span></span><span class="lit">@Override</span></div><div><span><span class="pln">			</span></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onPageStarted</span><span class="pun">(</span><span class="typ">WebView</span><span class="pln"> view</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> url</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bitmap</span><span class="pln"> favicon</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">				</span></span><span class="kwd">super</span><span class="pun">.</span><span class="pln">onPageStarted</span><span class="pun">(</span><span class="pln">view</span><span class="pun">,</span><span class="pln"> url</span><span class="pun">,</span><span class="pln"> favicon</span><span class="pun">);</span></div><div><span><span class="pln">			</span></span><span class="pun">}</span></div><div><span><span class="pln">			</span></span></div><div><span><span class="pln">			</span></span><span class="lit">@Override</span></div><div><span><span class="pln">			</span></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> shouldOverrideUrlLoading</span><span class="pun">(</span><span class="typ">WebView</span><span class="pln"> view</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> url</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">				</span></span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">super</span><span class="pun">.</span><span class="pln">shouldOverrideUrlLoading</span><span class="pun">(</span><span class="pln">view</span><span class="pun">,</span><span class="pln"> url</span><span class="pun">);</span></div><div><span><span class="pln">			</span></span><span class="pun">}</span></div><div><span><span class="pln">			</span></span></div><div><span><span class="pln">			</span></span><span class="lit">@Override</span></div><div><span><span class="pln">			</span></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onPageFinished</span><span class="pun">(</span><span class="typ">WebView</span><span class="pln"> view</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> url</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">				</span></span><span class="kwd">super</span><span class="pun">.</span><span class="pln">onPageFinished</span><span class="pun">(</span><span class="pln">view</span><span class="pun">,</span><span class="pln"> url</span><span class="pun">);</span></div><div><span><span class="pln">			</span></span><span class="pun">}</span></div><div><span><span class="pln">			</span></span></div><div><span><span class="pln">		</span></span><span class="pun">});</span></div><div><span><span class="pln">		</span></span></div><div><span><span class="pln">		</span></span><span class="pln">wv</span><span class="pun">.</span><span class="pln">setWebChromeClient</span><span class="pun">(</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">WebChromeClient</span><span class="pun">(){</span></div><div><span><span class="pln">			</span></span><span class="lit">@Override</span><span class="com">//实现js中的alert弹窗在Activity中显示</span></div><div><span><span class="com">	</span></span><span class="com">        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {</span></div><div><span><span class="com">	</span></span><span class="com">           Log.d(TAG, message);</span></div><div><span><span class="com">	</span></span><span class="com">            result.confirm();</span></div><div><span><span class="com">	</span></span><span class="com">            return true;</span></div><div><span><span class="com">	</span></span><span class="com">        }</span></div><div><span><span class="com">		</span></span><span class="com">});</span></div><div><span><span class="com">		</span></span></div><div><span><span class="com">		</span></span><span class="com">wv.loadUrl("file:///android_asset/index.html");</span></div><div><span><span class="com">		</span></span><span class="com">final Handler mHandler = new Handler();</span></div><div><span><span class="com">		</span></span><span class="com">//webview增加javascript接口,监听html页面中的js点击事件</span></div><div><span><span class="com">		</span></span><span class="com">wv.addJavascriptInterface(new Object(){</span></div><div><span><span class="com">			</span></span><span class="com">public String clickOnAndroid() {//将被js调用</span></div><div><span><span class="com">	</span></span><span class="com">            mHandler.post(new Runnable() {</span></div><div><span><span class="com">	</span></span><span class="com">                public void run() {</span></div><div><span><span class="com">	</span></span><span class="com">                </span><span><span class="com">	</span></span><span class="com">fromTakePhoto  = true;</span></div><div><span><span class="com">	</span></span><span class="com">                </span><span><span class="com">	</span></span><span class="com">//调用 启用摄像头的自定义方法</span></div><div><span><span class="com">	</span></span><span class="com">                    takePhoto("testimg" + Math.random()*1000+1 + ".jpg");</span></div><div><span><span class="com">	</span></span><span class="com">                    System.out.println("========fileFullName: " + fileFullName);</span></div><div><span><span class="com">	</span></span><span class="com">                    </span></div><div><span><span class="com">	</span></span><span class="com">                }</span></div><div><span><span class="com">	</span></span><span class="com">            });</span></div><div><span><span class="com">	</span></span><span class="com">            return fileFullName;</span></div><div><span><span class="com">	</span></span><span class="com">        }</span></div><div><span><span class="com">		</span></span><span class="com">}, "demo");</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div><span><span class="com">	</span></span></div><div><span><span class="com">	</span></span><span class="com">/*</span></div><div><span><span class="com">	</span></span><span class="com"> * 调用摄像头的方法</span></div><div><span><span class="com">	</span></span><span class="com"> */</span></div><div><span><span class="com">	</span></span><span class="com">public void takePhoto(String filename) {</span></div><div><span><span class="com">		</span></span><span class="com">System.out.println("----start to take photo2 ----");</span></div><div><span><span class="com">		</span></span><span class="com">Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);</span></div><div><span><span class="com">		</span></span><span class="com">intent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, "TakePhoto");</span></div><div><span><span class="com">		</span></span></div><div><span><span class="com">		</span></span><span class="com">//判断是否有SD卡</span></div><div><span><span class="com">		</span></span><span class="com">String sdDir = null;</span></div><div><span><span class="com">		</span></span><span class="com">boolean isSDcardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);</span></div><div><span><span class="com">		</span></span><span class="com">if(isSDcardExist) {</span></div><div><span><span class="com">			</span></span><span class="com">sdDir = Environment.getExternalStorageDirectory().getAbsolutePath();</span></div><div><span><span class="com">		</span></span><span class="com">} else {</span></div><div><span><span class="com">			</span></span><span class="com">sdDir = Environment.getRootDirectory().getAbsolutePath();</span></div><div><span><span class="com">		</span></span><span class="com">}</span></div><div><span><span class="com">		</span></span><span class="com">//确定相片保存路径</span></div><div><span><span class="com">		</span></span><span class="com">String targetDir = sdDir + "/" + "webview_camera";</span></div><div><span><span class="com">		</span></span><span class="com">File file = new File(targetDir);</span></div><div><span><span class="com">		</span></span><span class="com">if (!file.exists()) {</span></div><div><span><span class="com">			</span></span><span class="com">file.mkdirs();</span></div><div><span><span class="com">		</span></span><span class="com">}</span></div><div><span><span class="com">		</span></span><span class="com">fileFullName = targetDir + "/" + filename;</span></div><div><span><span class="com">		</span></span><span class="com">System.out.println("----taking photo fileFullName: " + fileFullName);</span></div><div><span><span class="com">		</span></span><span class="com">//初始化并调用摄像头</span></div><div><span><span class="com">		</span></span><span class="com">intent.putExtra(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");</span></div><div><span><span class="com">		</span></span><span class="com">intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileFullName)));</span></div><div><span><span class="com">		</span></span><span class="com">startActivityForResult(intent, 1);</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div><span><span class="com">	</span></span></div><div><span><span class="com">	</span></span><span class="com">/*</span></div><div><span><span class="com">	</span></span><span class="com"> * (non-Javadoc)</span></div><div><span><span class="com">	</span></span><span class="com"> * @see android.app.Activity#onActivityResult(int, int, android.content.Intent)</span></div><div><span><span class="com">	</span></span><span class="com"> * 重写些方法,判断是否从摄像Activity返回的webview activity</span></div><div><span><span class="com">	</span></span><span class="com"> */</span></div><div><span><span class="com">	</span></span><span class="com">@Override</span></div><div><span><span class="com">	</span></span><span class="com">protected void onActivityResult(int requestCode, int resultCode, Intent data) {</span></div><div><span><span class="com">		</span></span><span class="com">System.out.println("----requestCode: " + requestCode + "; resultCode " + resultCode + "; fileFullName: " + fileFullName);</span></div><div><span><span class="com">		</span></span><span class="com">if (fromTakePhoto && requestCode ==1 && resultCode ==-1) {</span></div><div><span><span class="com">			</span></span><span class="com">wv.loadUrl("javascript:wave2('" + fileFullName + "')");</span></div><div><span><span class="com">		</span></span><span class="com">} else {</span></div><div><span><span class="com">			</span></span><span class="com">wv.loadUrl("javascript:wave2('Please take your photo')");</span></div><div><span><span class="com">		</span></span><span class="com">}</span></div><div><span><span class="com">		</span></span><span class="com">fromTakePhoto = false;</span></div><div><span><span class="com">		</span></span><span class="com">super.onActivityResult(requestCode, resultCode, data);</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div><span><span class="com">	</span></span></div><div>
</div><div><span><span class="pln">	</span></span><span class="lit">@Override</span></div><div><span><span class="pln">	</span></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">boolean</span><span class="pln"> onCreateOptionsMenu</span><span class="pun">(</span><span class="typ">Menu</span><span class="pln"> menu</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span></div><div><span><span class="pln">		</span></span><span class="com">// Inflate the menu; this adds items to the action bar if it is present.</span></div><div><span><span class="com">		</span></span><span class="com">getMenuInflater().inflate(R.menu.camera_webview, menu);</span></div><div><span><span class="com">		</span></span><span class="com">return true;</span></div><div><span><span class="com">	</span></span><span class="com">}</span></div><div>
</div><div><span class="pun">}</span></div>
0
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值