2011-10-31 31 views
1

播出我有类,看起来像这样:起反应,从另一个进程

package com.broadcast; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 

public class BroadcastActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void tasterPritisnut(View target) { 
    Intent intent = new Intent("akcija"); 
    intent.putExtra("message", "Hello Valakar"); 
    this.sendBroadcast(intent); 
} 
} 

这是广播类。 Manifest类:

<uses-sdk android:minSdkVersion="10" /> 

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

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

现在我已经创造了新的类新项目:

package com.reciever; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class Reciever4 extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    String poruka = intent.getStringExtra("message"); 
    Log.d("", poruka + " " + Thread.currentThread().getName() + " " + Thread.currentThread().getId()); 
} 
} 

这是接收器类,以及清单文件是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.reciever" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="10" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <receiver android:name=".Reciever4"> 
     <intent-filter> 
      <action android:name="akcija"/> 
     </intent-filter> 
    </receiver> 
</application> 

</manifest> 

我安装了这两个应用程序,但是当我发送广播时,日志中没有打印任何内容。我已经构建了类似于Apress书籍的示例,但无法使其工作。我错过了什么?

回答

0

快速思考:你需要打电话给setAction吗?这个webpage有一个例子,如果你想要一个例子,他们会调用setAction。如果你的意图是用“com.yourdomain.yourapp.yourintent”这个完整的包名命名的(尽管我认为这不太可能导致你的问题)。

API docs<action>元说:

对于您定义的动作,最好使用包名作为前缀 ,以确保其唯一性。