android - 使用计时器定期调用电话?

标签 android timertask

我无法使用计时器内的电话管理器调用电话 (scheduleAtFixedRate) 在安卓中。我收到错误消息,例如您无法在计时器内创建处理程序。

有没有其他定时调用的方法

最佳答案

请一步一步来

在你的AndroidManifest.XML中写下

 <uses-permission android:name="android.permission.CALL_PHONE"/>
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

然后创建一个后台服务,它将在 24 小时后每天调用电话

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.IBinder;

public class MyService extends Service {

    MediaPlayer mp; 
    @Override   
    public IBinder onBind(Intent arg0) {

        return null;

    }

    @Override   
    public void onCreate() 
    {   
      super.onCreate(); 


    }

    @Override   
    public int onStartCommand(Intent intent, int flags, int startId) 
    {   


        String num="98XXXX51";

        Intent in = new Intent(Intent.ACTION_CALL);
        in.setData(Uri.parse("tel:" + num));
        in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        in.addFlags(Intent.FLAG_FROM_BACKGROUND);
        startActivity(in);


        return 0;

    }

    @Override   
    public void onDestroy() 
    {   
        mp.release();       
        super.onDestroy();

    }

}

为此再次将 AndroidManifest.xml 粘贴到 application 标签中

 <service
        android:name=".MyService"
        android:enabled="true" >
    </service>

之后从 Activity 中调用服务

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

import android.view.View;
import android.widget.Button;


public class MainActivity1 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button play, stop;

        play = (Button) findViewById(R.id.playId);      
        stop = (Button) findViewById(R.id.stopId);      
        play.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Calendar cal = Calendar.getInstance();

            Intent name = new Intent(MainActivity1.this, MyService.class);          
            PendingIntent pintent = PendingIntent.getService(getApplicationContext(), 0, name, 0);//.getService(this, 0, intent, 0);

            AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            // Start every 30 seconds
            alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pintent);
            //alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
            startService(new Intent(getBaseContext(), MyService.class));

        }

        });

        stop.setOnClickListener(new View.OnClickListener() {

        @Override

          public void onClick(View v) {

        Intent name = new Intent(MainActivity1.this, MyService.class);

        stopService(name);

        }

        });

    }

}

我给你除了 xml 布局之外的所有测试源。

关于android - 使用计时器定期调用电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20996125/

相关文章:

java - 需要修复我的 Java 定时器代码

java - 当我的类已经扩展了一个类时,如何实现 TimerTask?

java - 我希望我的计时器在后台运行,但它一旦进入后台 android 就会停止

安卓:SharedPreferences 问题

javascript - 向 Android 设备发送通知。已发送但未收到

android - 在 Android 2.1 后台运行的剪贴板监听器服务

java - 为什么我的 TimerTask.cancel() 返回 NPE ? (JAVA)

在触摸屏幕之前,Android 应用程序的 map 别针不会出现

android - 如何 Hook 到 Android 应用程序生命周期?

java - 定时器预定无法在它发生之前找出如何停止它