我正在尝试创建一个小部件,该小部件调用存储在sharedpreferences中的电话号码。我试过一些方法,但我是java的初学者,我不知道如何制作它。实际上问题是我真的不知道什么是上下文,何时我想用startActivity(intent)开始意图; Intellij将其列为错误。 这是代码:
package com.example;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
public class widgetCode extends AppWidgetProvider{
public void callHelp() {
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
String callnum = app_preferences.getString("callnum", "");
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+callnum));
startActivity(callIntent);
}
}
我会在xml中调用android:onclick中的callHelp()。
getDefaultSharedPreferences(this)中的“this”也有错误。如果有人解释我的小部件生命周期,也会受到欢迎。
有人可以帮助我吗?
答案 0 :(得分:0)
Context是一个Android对象,可以访问许多系统服务和功能。每个Activity和每个Service都是一个Context。 getDefaultSharedPreferences中的this是一个Context。基本上编写的代码希望直接在您的Activity中调用。
在您的情况下,您正在编写AppWidgetProvider,它是BroadcastReceiver的子类。在BroadcastReceiver中,当调用onReceive时,您将传递一个Context。您需要将其传递给callHelp。如有必要,您可能需要将其保存在类变量中,以便在需要时将其保存。