
大家好我想在默认的来电活动上调用我自己的活动..我已经使用广播接收器完成此 *** 作我在接听来电时调用我的活动.但是,当我接到来电时,它第一次正常工作,然后默认来电活动即将到来.我不知道有什么问题可以帮助我..
表现:
<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"package="com.satish.service"androID:versionCode="1"androID:versionname="1.0" ><uses-sdk androID:minSdkVersion="8" /><uses-permission androID:name="androID.permission.MODIFY_PHONE_STATE" /><uses-permission androID:name="androID.permission.CALL_PHONE" /><uses-permission androID:name="androID.permission.READ_PHONE_STATE" /><application androID:icon="@drawable/ic_launcher" androID:label="@string/app_name" > <receiver androID:name="Mycallreceiver" androID:enabled="true" > <intent-filter androID:priority="10"> <action androID:name="androID.intent.action.PHONE_STATE" > </action> </intent-filter> </receiver> <receiver androID:name="TestReceiver" androID:enabled="true" > <intent-filter androID:priority="10"> <action androID:name="jason.wei.custom.intent.action.TEST" > </action> </intent-filter> </receiver> <activity androID:name="CallActivity" androID:clearTaskOnLaunch="true" androID:launchMode="singleTask" > <intent-filter androID:priority="1000"></intent-filter> </activity></application></manifest>Java代码:
public class Mycallreceiver extends broadcastReceiver{ public static final String CUSTOM_INTENT = "jason.wei.custom.intent.action.TEST";Context context = null; private static final String TAG = "Phone call";public voID onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras != null) { String state = extras.getString(TelephonyManager.EXTRA_STATE); Log.w("DEBUG", state); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { Intent i = new Intent(); i.setAction(CUSTOM_INTENT); context.sendbroadcast(i); } }}}public class TestReceiver extends broadcastReceiver {public voID onReceive(Context context, Intent intent) { if (intent.getAction().equals(Mycallreceiver.CUSTOM_INTENT)) { System.out.println("GOT THE INTENT"); context.startActivity(new Intent(context, CallActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); }}}public class CallActivity extends Activity implements OnClickListener{private ITelephony telephonyService;protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); settheme(androID.R.style.theme_Dialog); ((button)findVIEwByID(R.ID.call)).setonClickListener(this); ((button)findVIEwByID(R.ID.end)).setonClickListener(this); TelephonyManager telephony = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); try { Class c = Class.forname(telephony.getClass().getname()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); telephonyService = (ITelephony) m.invoke(telephony); } catch (Exception e) { e.printstacktrace(); }}@OverrIDepublic voID onClick(VIEw arg0) { switch (arg0.getID()) { case R.ID.call: telephonyService.answerRingingCall(); break; case R.ID.end: telephonyService.endCall(); finish(); break; default: break; }}}解决方法:
实际上完整的代码是我发布上面只是替换下面的代码
public class TestReceiver extends broadcastReceiver{public voID onReceive(Context context, Intent intent) {if (intent.getAction().equals(Mycallreceiver.CUSTOM_INTENT)) { System.out.println("GOT THE INTENT"); context.startActivity(new Intent(context, CallActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));}} }使用以下代码
public class TestReceiver extends broadcastReceiver{@OverrIDepublic voID onReceive(final Context context, Intent intent) { if (intent.getAction().equals(Mycallreceiver.CUSTOM_TEST_INTENT)) { System.out.println("GOT THE INTENT"); final String mobileNumber = intent.getExtras().getString("number"); Thread thread = new Thread(){ private int sleepTime = 400; @OverrIDe public voID run() { super.run(); try { int wait_Time = 0; while (wait_Time < sleepTime ) { sleep(100); wait_Time += 100; } }catch (Exception e) { Toast.makeText(context, "Error Occured Because:" + e.getMessage(), Toast.LENGTH_SHORT).show(); } finally { } context.startActivity(new Intent(context, CallActivity.class).putExtra("number", mobileNumber) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } }; thread.run(); }} } 总结 以上是内存溢出为你收集整理的android – 如何在接到来电时调用活动.全部内容,希望文章能够帮你解决android – 如何在接到来电时调用活动.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)