AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.EX216"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:label="@string/app_name" android:name=".TodayDate">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget"></meta-data>
</receiver>
<activity android:name="com.EX216.Activity01"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-sdk android:minSdkVersion="13" />
</manifest>
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.URLUtil;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Activity01 extends Activity
{
private final String DEBUG_TAG = "Activity01";
private Button mButton;
private EditText mEditText;
private WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.Button01);
mEditText = (EditText) findViewById(R.id.EditText01);
mWebView = (WebView) findViewById(R.id.WebView01);
//设置支持JavaScript脚本
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
webSettings.setAllowFileAccess(true);
//设置支持缩放
webSettings.setBuiltInZoomControls(true);//设置WebViewClient
//启动桌面应用
RemoteViews views = new RemoteViews(Activity0 .this
.getPackageName(), R.layout.widget_layout);
views.setTextViewText(R.id.Month, tixing_neirong);
//views.setImageViewResource(R.id.ImageView01, util.image[index]);
ComponentName widget = new ComponentName(Activity01.this,TodayDate.class);//启动TodayDate
AppWidgetManager manager = AppWidgetManager
.getInstance(Activity01.this);
manager.updateAppWidget(widget, views);
mWebView.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
}
});
}
//以下是调用桌面应用的
import java.io.FileInputStream;
import org.apache.http.util.EncodingUtils;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.text.format.Time;
import android.widget.RemoteViews;
public class TodayDate extends AppWidgetProvider
{
private Context context_;
public TodayDate(Context context_){
this.context_=context_;
}
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
RemoteViews updateView = buildUpdate(context);
appWidgetManager.updateAppWidget(appWidgetIds, updateView);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews buildUpdate(Context context)
{
RemoteViews updateView = null;
updateView = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Intent launchIntent = new Intent();
launchIntent.setComponent(new ComponentName("miracal.gate", "miracal.gate.Activity01 "));//调用主程序
launchIntent.setAction(Intent.ACTION_MAIN);
launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
PendingIntent intent = PendingIntent.getActivity(context, 0, launchIntent, 0);
updateView.setOnClickPendingIntent(R.id.Base, intent);
return updateView;
}
}
主要的代码全在上面了,
也就是说,程序启动直接调用这个桌面应用程序!
但是运行后直接崩溃了!
不知道什么原因......Activity和桌面应用的调用是不是这样做的呢?
请高手指教,非常感谢!!
------解决思路----------------------
把崩溃的日志信息贴出来啊 , 看代码是看不出来的
------解决思路----------------------
logcat里面不是有日志吗
------解决思路----------------------
首先得学会看日志。
eclipse下看红色日志。
adb logcat看看
cygwin或linux下的:
adb logcat
------解决思路----------------------
grep "Exception
------解决思路----------------------
Error"
更容易看到异常。
------解决思路----------------------
看日志,学会用断点调试
------解决思路----------------------
我也不会!!!!
------解决思路----------------------
我运行了一下 每隔一分钟弹出个对话框不知道你实现的效果是什么
------解决思路----------------------
没提示崩溃
------解决思路----------------------
运行了20多分钟没有崩溃……
是不是你休眠太长时间,被系统杀死了?崩溃应该会报错的
------解决思路----------------------
Activity弄的太多了吧。一个警报打开一个activity。如果里面有图片的话,岂不占用大量内存,导致OOM?
------解决思路----------------------
我设置成1秒弹出一个提示activity 简直了 这会不崩溃?你activity都不finish()掉,一直开,开多了就崩溃了很正常····
------解决思路----------------------
单独开个线程处理 不要把耗时和资源的代码放到UI线程中
------解决思路----------------------
解决了没有?半年多了?
------解决思路----------------------
你把那些耗时的操作都放到子线程中去试试
------解决思路----------------------
Log不看。。。