ACTION_CALL Intercept - Anfänger Problem

  • Antworten:0
lolle l.
  • Forum-Beiträge: 1

07.09.2010, 21:37:02 via Website

Hallo Zusammen!

Spiele nun seit drei Tagen ein wenig mit Android herum. Mein Plan ist es eine Android Applikation zu schreiben mit welcher ich den herkömmlichen DIAL Vorgang unterbrechen kann und Einfluss auf die gewählte Nummer nehmen kann (Überprüfung der Vorwahl - abgespeicherte HomeZone-Nummern sollten wenn möglich zuerst angerufen werden... etc.). Als erstes ging es auch ganz gut voran, nun hänge ich allerdings... Ich denke mal es handelt sich um ein anfängliches Verständnisproblem und würde mich über jedes Feedback freuen.

Grundsätzliches:
- Per BROADCAST RECEIVER fange ich den Standard DIAL-Vorgang ab.
- Darin wiederum starte ich eine neue ACTIVITY mit welcher ich eine Dialog-Box ausgeben lasse
- Je nach Reaktion auf die Dialog-Box soll ein neuer ACTION_CALL gestartet werden... und hier hänge ich...

Die Numer wird in der DialogBox angezeigt. Wenn ich jetzt mit "JA" bestätige soll ein neuer Anruf mit der Nummer abgesetzt werden was allerdings nicht funktioniert... Es tut sich gar nichts. Nach meinem jetzigen Verständnis dachte ich das Problem würde sich mittels "Intent.FLAG_ACTIVITY_NEW_TASK" lösen lassen... Allerdings auch ohne Erfolg.

Bin für jeden weiteren Ansatz sehr dankbar..

Viele Grüße




Manifest XML
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="de.vxproject.android.checkDial"
4 android:versionCode="1"
5 android:versionName="1.0.0">
6 <application android:icon="@drawable/icon" android:label="@string/app_name">
7<activity android:name="Test" android:label="@string/app_name" android:launchMode="singleInstance">
8 <intent-filter>
9  <action android:name="android.intent.action.MAIN" />
10 <category android:name="android.intent.category.LAUNCHER" />
11 </intent-filter>
12  </activity>
13  <receiver android:name=".DialFilter">
14 <intent-filter android:priority="1">
15 <action android:name="android.intent.action.PHONE_STATE"/>
16 <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
17 </intent-filter>
18 </receiver>
19 </application>
20        <uses-sdk android:minSdkVersion="7" />
21        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
22 <uses-permission android:name="android.permission.CALL_PHONE" />
23 <uses-permission android:name="android.permission.ACTION_CALL" />
24 <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
25</manifest>


DialFilter.java
1package de.vxproject.android.checkDial;
2
3import android.content.BroadcastReceiver;
4import android.content.Context;
5import android.content.Intent;
6
7
8public class DialFilter extends BroadcastReceiver{
9
10public static String LOG_NUMBER = null;
11
12public void onReceive(Context context, Intent intent) {
13 LOG_NUMBER = getResultData();
14
15 setResultData(null);
16
17 Intent startActivity = new Intent();
18 startActivity.setClass(context, Test.class);
19 startActivity.setAction(Test.class.getName());
20 startActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
21 context.startActivity(startActivity);
22 }
23}


Test.java
1package de.vxproject.android.checkDial;
2
3import android.app.Activity;
4import android.app.AlertDialog;
5import android.content.DialogInterface;
6import android.content.Intent;
7import android.net.Uri;
8import android.os.Bundle;
9
10public class Test extends Activity {
11public void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
14 alt_bld.setMessage(DialFilter.LOG_NUMBER)
15 .setCancelable(false)
16 .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
17 public void onClick(DialogInterface dialog, int id) {
18 Intent callIntent = new Intent(Intent.ACTION_CALL);
19 callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
20 callIntent.setData(Uri.parse("tel:"+DialFilter.LOG_NUMBER));
21 startActivity(callIntent);
22 }
23 })
24 .setNegativeButton("No", new DialogInterface.OnClickListener() {
25 public void onClick(DialogInterface dialog, int id) {
26 dialog.cancel();
27 }
28 });
29 AlertDialog alert = alt_bld.create();
30 alert.setTitle("Title");
31 alert.setIcon(R.drawable.icon);
32 alert.show();
33 }
34}

— geändert am 07.09.2010, 21:39:24

Antworten