1

我正在尝试使用广播接收器开发一个 android 应用程序,我的应用程序意味着,首先我想在我的第一个活动中定义一个父号码并将其存储到数据库中,当我们安装应用程序时,这个活动将启动并将父号码保存到数据库,然后广播接收器想要激活并监听呼叫状态的变化,如果通过该电话拨打任何电话我想向父号码发送消息......??......在这里我如何使用广播接收器...有可能...我在下面提到我的代码......我希望你能帮我解决这个问题。我尝试了很多方法,但我无法得到结果。首先我创建了我的第一个我访问我的数据库值并尝试激活广播接收器的活动。

    public class PARENT_CALLActivity extends Activity 
{

    String PARENT=null;
    EditText edparent;
    Button submit;
    String parent_number;
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        edparent=(EditText)findViewById(R.id.editText1);
        submit=(Button)findViewById(R.id.btnsubmit);


        submit.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub


                PARENT=edparent.getText().toString();   

                MyDabasehandler db=new MyDabasehandler(getApplicationContext());

                if(db.getContact().equals(null))
                {
                    db.addContact(new Contacts(PARENT));

                }
                else
                {
                    db.editContact();
                }
             Intent reciver=new Intent(getApplicationContext(),myBroadcast.class);
             startActivity(reciver);
            }

        });       
    }
} 

我的广播接收器....

     public class myBroadcast extends BroadcastReceiver
{

    String out_number;
    String myparent;
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        // TODO Auto-generated method stub

     out_number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

    MyDabasehandler db=new MyDabasehandler(context);

    myparent=db.getContact().toString();

        //Toast.makeText(context, out_number+"number", Toast.LENGTH_LONG).show();


        SmsManager sm=SmsManager.getDefault();
          sm.sendTextMessage(myparent, "5554", "calling..to"+out_number, null, null);//5554 is my emulator number to check its in emulator
        Toast.makeText(context, "send"+out_number, Toast.LENGTH_SHORT).show();


    }


}

我的清单是..

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="sha.pcall"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
  <uses-permission android:name="android.permission.SEND_SMS"/> 
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PARENT_CALLActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
        <activity android:name=".MyDabasehandler"
        android:label="@string/app_name">       
        </activity>

        <activity android:name=".Contacts"
        android:label="@string/app_name">
        </activity>

        <receiver android:name=".myBroadcast"
                  android:label="@string/app_name">
            <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
                <action android:name="android.intent.action.PHONE_STATE" />                
            </intent-filter>
        </receiver> 

    </application>
/manifest>

当我按下提交按钮时,我被迫关闭。

4

1 回答 1

0

您应该放置显示异常 StackTrace 的 LogCat 输出。

我可以在代码中发现您似乎遗漏了什么

<uses-permission android:name="android.permission.READ_PHONE_STATE" >

于 2013-02-09T08:20:54.743 回答