解决方案 »
- 点击应用启动问题
- 高手进!android GPS问题
- 如何从一个Activity跳转到一个ListActivity??
- android中ftp4j断点上传问题
- android 2.2 无法正确监听数据库问题
- Android:怎么解析网上已知格式的json数据文件,并显示到界面上
- 为什么下载了Android SDK Manager,但是无法下载具体的SDK呢?
- IOS开发目前苹果手机一部//电脑上开发环境要怎么配置呢?
- android 叉叉助手 弹幕原理
- android System_server进成的GC线程卡死,无法退出GC
- WebView 设置特定字体缩放比例
- 求助gridview里item中的imageview高度问题
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
再确定BroadcastReceiver有没有注册上。
android.intent.action.PHONE_STATE不是有序广播,如果上面两条没问题,应该是可以接受到的。
android.intent.action.NEW_OUTGOING_CALL是有序广播,如果怀疑被其他应用abort了的话,就把你的BroadcastReceiver设置一个比较高的优先级,试试能不能接收到。
能收到android.intent.action.NEW_OUTGOING_CALL这个广播吗?
<receiver android:name="com.test.servicedemo.MyReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
虚拟机测试通过,真机失败
4.0以后对这个情况是有限制的,一个APK中如果没有Activity,只有Receiver或Service,Service或Receiver都是不会启动的,也就收不到广播。
这种限制是为了防止一些流氓软件在后台乱来。
Activity启动以后能收到广播吗?
广播还是放在Manifest里面注册。然后你的应用要有个Activity,开机后你运行一下这个Activity。之后就一直能收到广播了。
广播还是放在Manifest里面注册。然后你的应用要有个Activity,开机后你运行一下这个Activity。之后就一直能收到广播了。好吧,还是没有效果
广播接收器:
package com.example.boot;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;public class BootReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.PHONE_STATE")){
Log.e("boot", "boot ------ android.intent.action.PHONE_STATE");
} else if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")){
Log.e("boot", "boot ------ android.intent.action.NEW_OUTGOING_CALL");
}
}}
Activity,只要启动一次就好了:package com.example.boot;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}}
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.boot"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
</uses-permission> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.boot.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <receiver android:name="BootReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
</application></manifest>打印的log:
MTK和全志的都试过
MTK和全志的都试过我的小米 没过