1

ブロードキャスト レシーバーを使用して Android アプリケーションを開発しようとしています。私のアプリケーションは、まず、最初のアクティビティで PARENT 番号を定義してデータベースに保存することを意味します。アプリをインストールすると、このアクティビティが起動し、親番号が保存されます。データベース、ブロードキャスト レシーバーがアクティブになり、通話状態が変化するのをリッスンしたい場合、その電話から電話がかかってきた場合、親番号にメッセージを送信したい...??...ここでブロードキャスト レシーバーを使用するにはどうすればよいですか...それは可能ですか...そして私は以下の私のコードに言及しています...これについて私を助けてくれることを願っています.私はこれを多くの方法でやろうとしていますが、結果を得ることができません.その中のアクティビティは、データベースの値にアクセスし、ブロードキャスト レシーバーをアクティブにしようとしています。

    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 に答える