Java android上的webview-whatsapp共享
我让webview显示我的站点。 在我的网站上,我分享给whatsapp。 在mobile broweser中,它工作得很好-在webview中,它得到了更多的支持 whatsapp://send?text=..my 网址 和。。 net::ERR\u UNKNOW\u URL\u方案 请帮帮我,我尝试了很多方法,但都无法解决 这是我的代码:Java android上的webview-whatsapp共享,java,android,webview,whatsapp,Java,Android,Webview,Whatsapp,我让webview显示我的站点。 在我的网站上,我分享给whatsapp。 在mobile broweser中,它工作得很好-在webview中,它得到了更多的支持 whatsapp://send?text=..my 网址 和。。 net::ERR\u UNKNOW\u URL\u方案 请帮帮我,我尝试了很多方法,但都无法解决 这是我的代码: package info.demo.demo.activity; import android.app.Activity; import android
package info.demo.demo.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import info.ballerina.ballerina.R;
import info.ballerina.ballerina.helper.ParseUtils;
import info.ballerina.ballerina.helper.PrefManager;
import info.ballerina.ballerina.model.Message;
public class MainActivity extends AppCompatActivity {
private static String TAG = MainActivity.class.getSimpleName();
// private Toolbar mToolbar;
private ListView listView;
private List<Message> listMessages = new ArrayList<>();
private MessageAdapter adapter;
private PrefManager pref;
WebView webview;
ProgressBar loadingProgressBar, loadingTitle;
ImageView logo;
int first = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// getWindow().requestFeature(Window.FEATURE_PROGRESS);
//getWindow().getDecorView().setSystemUiVisibility(0x10);
setContentView(R.layout.activity_main);
loadingProgressBar = (ProgressBar) findViewById(R.id.progressbar_Horizontal);
logo = (ImageView) findViewById(R.id.imglogo);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
final Activity activity = this;
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
loadingProgressBar.setProgress(progress);
//loadingTitle.setProgress(newProgress);
// hide the progress bar if the loading is complete
if (progress == 100) {
loadingProgressBar.setVisibility(View.GONE);
logo.setVisibility(ImageView.GONE);
webview.setVisibility(WebView.VISIBLE);
first = 1;
} else {
loadingProgressBar.setVisibility(View.VISIBLE);
if (first == 0) {
webview.setVisibility(WebView.GONE);
logo.setVisibility(ImageView.VISIBLE);
} else if (first == 1) {
logo.setVisibility(ImageView.GONE);
}
}
}
});
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String
failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});
webview.loadUrl("http://www.demo.com/");
listView = (ListView) findViewById(R.id.list_view);
/* mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);*/
adapter = new MessageAdapter(this);
pref = new PrefManager(getApplicationContext());
listView.setAdapter(adapter);
Intent intent = getIntent();
String email = pref.getEmail();
if (email != null) {
ParseUtils.subscribeWithEmail(pref.getEmail());
} else {
Log.e(TAG, "Email is null. Not subscribing to parse!");
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String message = intent.getStringExtra("message");
Message m = new Message(message, System.currentTimeMillis());
listMessages.add(0, m);
adapter.notifyDataSetChanged();
}
private class MessageAdapter extends BaseAdapter {
LayoutInflater inflater;
public MessageAdapter(Activity activity) {
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return listMessages.size();
}
@Override
public Object getItem(int position) {
return listMessages.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = inflater.inflate(R.layout.list_row, null);
}
TextView txtMessage = (TextView) view.findViewById(R.id.message);
TextView txtTimestamp = (TextView) view.findViewById(R.id.timestamp);
Message message = listMessages.get(position);
txtMessage.setText(message.getMessage());
CharSequence ago = DateUtils.getRelativeTimeSpanString(message.getTimestamp(), System.currentTimeMillis(),
0L, DateUtils.FORMAT_ABBREV_ALL);
txtTimestamp.setText(String.valueOf(ago));
return view;
}
}
@Override
public void onBackPressed() {
if (webview.canGoBack()) {
webview.goBack();
} else {
super.onBackPressed();
}
}
}
package info.demo.demo.activity;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.text.format.DateUtils;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.webkit.WebChromeClient;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.List;
导入信息.ballerina.ballerina.R;
导入info.ballerina.ballerina.helper.ParseUtils;
导入info.ballerina.ballerina.helper.PrefManager;
导入info.ballerina.ballerina.model.Message;
公共类MainActivity扩展了AppCompatActivity{
私有静态字符串标记=MainActivity.class.getSimpleName();
//私有工具栏mToolbar;
私有列表视图列表视图;
private List listMessages=new ArrayList();
专用消息适配器;
私人pref;
网络视图;
进度条加载进度条,加载标题;
ImageView徽标;
int first=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//getWindow().requestFeature(Window.FEATURE\u进度);
//getWindow().getDecorView().SetSystemActivity(0x10);
setContentView(R.layout.activity_main);
loadingProgressBar=(ProgressBar)findViewById(R.id.ProgressBar\U水平);
logo=(ImageView)findviewbyd(R.id.imglogo);
webview=(webview)findviewbyd(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
最终活动=此;
setWebView.WebChromeClient(新WebChromeClient(){
public void onProgressChanged(WebView视图,int-progress){
//活动和网络视图以不同的尺度衡量进度。
//当我们达到100%时,进度表将自动消失
加载进度条。设置进度(进度);
//加载title.setProgress(newProgress);
//如果加载完成,则隐藏进度条
如果(进度==100){
加载ProgressBar.setVisibility(View.GONE);
logo.setVisibility(ImageView.GONE);
setVisibility(webview.VISIBLE);
第一个=1;
}否则{
加载ProgressBar.setVisibility(View.VISIBLE);
如果(第一个==0){
setVisibility(webview.GONE);
logo.setVisibility(ImageView.VISIBLE);
}else if(first==1){
logo.setVisibility(ImageView.GONE);
}
}
}
});
setWebViewClient(新的WebViewClient(){
public void onReceivedError(WebView视图,int-errorCode,字符串描述,字符串
故障(URL){
Toast.makeText(活动“噢,不!”+描述,Toast.LENGTH_SHORT.show();
}
});
webview.loadUrl(“http://www.demo.com/");
listView=(listView)findViewById(R.id.list\u视图);
/*mToolbar=(工具栏)findviewbyd(R.id.Toolbar);
设置支持操作栏(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true)*/
adapter=新消息适配器(此);
pref=新的PrefManager(getApplicationContext());
setAdapter(适配器);
Intent=getIntent();
字符串email=pref.getEmail();
如果(电子邮件!=null){
ParseUtils.subscribeWizoTheMail(pref.getEmail());
}否则{
Log.e(标记“电子邮件为空。不订阅解析!”);
}
}
@凌驾
受保护的void onNewIntent(意图){
super.onNewIntent(意向);
字符串消息=intent.getStringExtra(“消息”);
消息m=新消息(消息,System.currentTimeMillis());
listMessages.add(0,m);
adapter.notifyDataSetChanged();
}
私有类MessageAdapter扩展了BaseAdapter{
充气机;
公共消息适配器(活动){
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
@凌驾
public int getCount(){
返回listMessages.size();
}
@凌驾
公共对象getItem(int位置){
返回listMessages.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
如果(视图==null){
视图=充气机。充气(R.layout.list_行,空);
}
TextView txtMessage=(TextView)view.findViewById(R.id.message);
TextView txtTimestamp=(TextView)view.findViewById(R.id.timestamp);
Message Message=listMessages.get(位置);
txtMessage.setText(message.getMessage());
CharSequence ago=DateUtils.getRelativeTimeSpanString(message.getTimestamp(),System.currentTimeMillis(),System,
0L,DateUtils.FORMAT_ABBREV_ALL);
txtTimestamp.setText(String.valueOf(ago));
返回vi
webview.setWebViewClient(new WebViewClient() {
});
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e("tag","url overrride url = "+ url);
if(url.startsWith("whatsapp://")){
Uri uri=Uri.parse(url);
String msg = uri.getQueryParameter("text");
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, msg);
sendIntent.setType("text/plain");
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
return true;
}
return false;
}