Android 如何在不修改源码的情况下监听去电状态(接通,挂断)。注意是去电不是来电

qq_27665781 2016-07-25 04:12:12
Android 如何在不修改源码的情况下监听去电状态(接通,挂断)。
注意是去电不是来电
注意是去电不是来电
...全文
1104 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
王能 2019-01-02
  • 打赏
  • 举报
回复
最暴力办法:托管系统拨号功能(但是一个普通app托管拨号功能,用户应该不会同意的)
雕·不懒惰 2019-01-02
  • 打赏
  • 举报
回复
引用 10 楼 morninggood 的回复:
这个应该搞不定吧/
有搞定的欢迎提供demo,付费


不修改源码的话,手机需要Root才能实现
王能 2019-01-02
  • 打赏
  • 举报
回复
不需要root,百度搜“android 默认应用电话”,你得写整个接打电话的功能,并且用户还得同意
morninggood 2019-01-02
  • 打赏
  • 举报
回复
引用 12 楼 王能 的回复:
最暴力办法:托管系统拨号功能(但是一个普通app托管拨号功能,用户应该不会同意的)
托管系统拨号功能,也需要root吧?
morninggood 2018-12-31
  • 打赏
  • 举报
回复
这个应该搞不定吧/ 有搞定的欢迎提供demo,付费
  • 打赏
  • 举报
回复
试了一下楼主的博客上写的,没用
qq_27665781 2017-01-17
  • 打赏
  • 举报
回复
引用 6 楼 qq_32671677 的回复:
楼主,这个有解决方法了吗? 麻烦给个解决方案啊。我QQ358892638,万分感谢!!
已回复
qq_27665781 2017-01-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/qq_27665781/article/details/54582509 不好意思。,最近太忙了。没看到留言。下午把上个项目源码copy了出来。放在这个地址里面。可以借鉴下吧
qq_32671677 2017-01-06
  • 打赏
  • 举报
回复
楼主,这个有解决方法了吗? 麻烦给个解决方案啊。我QQ358892638,万分感谢!!
落花飞花 2016-12-23
  • 打赏
  • 举报
回复
lz有方案了么?求解啊
煮熟的土豆 2016-08-09
  • 打赏
  • 举报
回复
我最近也在做这个功能,请问你实现了吗
我只是小菜 2016-08-09
  • 打赏
  • 举报
回复
需要用到BroadcastReceiver ,首先要权限PROCESS_OUTGOING_CALLS。然后通过广播机制:


public class BroadcastReceiverMgr extends BroadcastReceiver {
	
	private final String TAG = MyBroadcastReceiver.TAG;

	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		Log.i(TAG, "[Broadcast]"+action);
		
		//呼出电话
		if(action.equals(MyBroadcastReceiver.B_ACTION_NEW_OUTGOING_CALL)){
			String outPhoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
			Log.i(TAG, "[Broadcast]ACTION_NEW_OUTGOING_CALL:"+outPhoneNumber);
		}	
	}
}
然后在activity中:


public class MyBroadcastReceiver extends Activity {
	public final static String TAG = "MyBroadcastReceiver";
		
	public final static String B_ACTION_NEW_OUTGOING_CALL = Intent.ACTION_NEW_OUTGOING_CALL;
	
	private BroadcastReceiverMgr mBroadcastReceiver;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.my_broadcast_receiver);
	}
	
	
	
	

	//按钮1-注册广播
	public void registerIt(View v) {
		Log.i(TAG, "registerIt");
		mBroadcastReceiver = new BroadcastReceiverMgr();
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction(Intent.ACTION_NEW_OUTGOING_CALL);
		intentFilter.setPriority(Integer.MAX_VALUE);
		registerReceiver(mBroadcastReceiver, intentFilter);
	}
	
	//按钮2-撤销广播
	public void unregisterIt(View v) {
		Log.i(TAG, "unregisterIt");
		unregisterReceiver(mBroadcastReceiver);
	}
	
}
了解了这个还不够,由于这个BroadcastReceiver的功能类似监听器,因此你得在软件中对其进行注册,方法就是在AndroidManifest.xml文件中加入如下代码: <receiver android:name="MyReceiver"> <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver>
qq_27665781 2016-08-09
  • 打赏
  • 举报
回复
引用 1 楼 liangliangjingjing 的回复:
你实现折功能么有
煮熟的土豆 2016-08-09
  • 打赏
  • 举报
回复
你实现折功能么有

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧