[英]BroadcastReceiver using 1 time
晚上好,我有一個簡單的程序,當我接到電話時,它會激活BroadcastReceiver來檢測電話號碼,問題是當我接到電話時,它將再次寫入數據庫,而當我再次斷開呼叫記錄時,將寫入總和3次! 而且我只想在玩的時候1! 另一個問題是電話響起時,在數據庫中寫入徽標(這里可以!),但是它不接聽電話,而是再次寫入電話! 代碼是這樣的:
我的廣播:它的作品!
public class MyBroadcastReceiver extends BroadcastReceiver {
String idtelemovel="1";
String phone_number;
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Entrou no BroadCastReceiver!!! : ");
Bundle bundle = intent.getExtras();
phone_number = bundle.getString("incoming_number");
System.out.println("Phone Number : " + phone_number);
Log.i("zz", "Phone Number : " + phone_number);
new SummaryAsyncTask().execute((Void) null);
}
class SummaryAsyncTask extends AsyncTask<Void, Void, Boolean> {
private void postData(String phone_number) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.AAA.com/insert.php");
try {
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
nameValuePairs.add(new BasicNameValuePair("Street", phone_number));
nameValuePairs.add(new BasicNameValuePair("House", idtelemovel));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
}
catch(Exception e)
{
Log.e("log_tag", "Error: "+e.toString());
System.out.print("*********fail*********");
}
}
@Override
protected Boolean doInBackground(Void... params) {
postData(phone_number);
return null;
}
}
}
表現:
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".MyBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<activity
android:name="com.example.a.BroadcastReceiver"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity><service android:name=".MyServices" />
</application>
</manifest>
廣播意圖還包括呼叫狀態(空閑,響鈴,摘機)。 您可以使用Telephony.EXTRA_STATE
鍵讀取它,然后將其與可能的值進行比較。 例如:
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
{
String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
// call your asynctask ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.