【问题标题】:Launch call from widget in android [duplicate]从android中的小部件启动调用[重复]
【发布时间】:2011-08-25 09:47:41
【问题描述】:

是否可以通过在 android 的主屏幕小部件中按下按钮来发起呼叫?

我有以下代码,但它不起作用,按下按钮什么都不做:

public class WidgetTestActivity extends AppWidgetProvider {

        @Override
        public void onEnabled(Context context)
        {
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);

            String url = "tel:3334444";
            Intent i = new Intent(Intent.ACTION_CALL);
            i.setData(Uri.parse(url));
            PendingIntent call1 = PendingIntent.getBroadcast(context, 0, i, 0);

            remoteViews.setOnClickPendingIntent(R.id.button1, call1);   
        }
}

【问题讨论】:

    标签: android android-widget android-intent widget phone-call


    【解决方案1】:

    AppWidgetProvider 有 onRecive(Context context, Intent intent) 方法,您可以在其中检查意图操作并执行您想要的代码。

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
    
        if(intent.getAction().equals(Intent.ACTION_CALL))
        {
            //DO WHAT YOU WANT
        }
    }
    

    【讨论】:

    • 我的理解是要启动的 Intent 已经用 Intent.ACTION_CALL 指定了,即在实际 Activity 中使用时,调用是 Intent intent = new Intent(Intent.CALL_ACTION); intent.setData(Uri.parse("tel:69342"));开始活动(意图);
    • 你甚至可以自己定义一个动作(它只是一个字符串)。如果是这样,您必须注册您定义的 AppWidgetProvider 将使用该特定 Intent Action 的 AndroidManifest.xml。 remoteViews.setOnClickPendingIntent(..);通过这种方法,您设置当单击按钮时将触发指定的意图,并且您可以将代码放入 onRecive 检查意图操作...我不知道这是否是您正在寻找的
    【解决方案2】:

    您是否在 Android Manifest 中指定了 CALL_PHONE 权限?

    http://developer.android.com/reference/android/Manifest.permission.html#CALL_PHONE

    【讨论】:

    • 我已经定义了这个权限,是的。
    猜你喜欢
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    相关资源
    最近更新 更多