标签: android-broadcast

通过RTMP广播视频 - Android

我必须开发一个应用程序,它可以通过RTMP协议以H.264格式向Wowza服务器广播直播.我正在寻找一个RTMP协议库,可以帮助我将流发布到Server.

如果此问题已经发布,请忽略我.

谢谢 !

android rtmp android-broadcast

2
推荐指数
1
解决办法
9917
查看次数

RECEIVE_BOOT_COMPLETED和"导出的接收者不需要许可"

我的问题不是重复:我搜索了SO和网络,但还没有找到明确的答案.

在与蓝牙相关的应用程序中,我希望Service在设备启动时启动后台,然后连接到蓝牙信标(如果可用),并在某些事件上向用户发布Android通知.

所以我添加了以下几行AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <service 
        android:name="ScanService"
        android:icon="@drawable/ic_launcher">
        <intent-filter>
            <category android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

然而,Eclipse显示警告导出的接收器不需要许可,这可能意味着任何应用程序都可以运行我的服务.当然,我不希望这样.

我只想要Android OS(在启动时)和我的MainActivity(充当后台服务的设置GUI前端)能够(重新)启动ScanService.

这个问题有两个常见的建议:

  1. 首先是将android:exported ="false"添加到intent过滤器.
  2. 第二是向intent过滤器添加android:permission.

但我仍然有跟进问题:

  1. BOOT_COMPLETED广播仍然可以投放到"非出口"的服务?
  2. 在这里指定什么权限,是真的RECEIVE_BOOT_COMPLETE还是别的(Android系统是否需要此权限?)

android intentfilter android-manifest android-intent android-broadcast

2
推荐指数
1
解决办法
1912
查看次数

如何在BroadcastReceiver中直接使用方法"getSystemService"?

我遇到了这个问题:getSystemServiceContext类中定义,所以我假设它在调用时调用context.getSystemService.我无法理解以下getSystemService直接调用的代码BroadcastReceiver.我运行代码,没有错误显示!

代码:

 public class MainActivity extends Activity {
    ……
 class NetworkChangeReceiver extends BroadcastReceiver {
    @Override
  public void onReceive(Context context, Intent intent) {
    ConnectivityManager connectionManager = (ConnectivityManager)
    getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isAvailable()) 
    {
    Toast.makeText(context, "network is available",
    Toast.LENGTH_SHORT).show();
    } else {
    Toast.makeText(context, "network is unavailable",
    Toast.LENGTH_SHORT).show();
    }
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

java android android-intent android-activity android-broadcast

2
推荐指数
1
解决办法
3287
查看次数

Android - ConnectivityManager.EXTRA_NETWORK_INFO已弃用

我正在创建一个BroadcastReceiver来监听Wi-Fi连接的变化:

registerReceiver(new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {

            NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); // deprecated

            // Get connectivity details from networkInfo...

        }

    }

}, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
Run Code Online (Sandbox Code Playgroud)

但是,ConnectivityManager.EXTRA_NETWORK_INFO已弃用,那么如何获取NetworkInfo对象呢?

android android-broadcast android-broadcastreceiver

2
推荐指数
1
解决办法
3470
查看次数

本地广播空指针异常

我在intentService中有一个本地广播,它向一个活动发送一条消息.问题是我得到一个空指针异常.任何帮助表示赞赏:)

LogCat错误

01-22 17:57:15.461: I/Arrival(16592): This is instantated
01-22 17:57:16.859: D/sender(16592): Broadcasting message
01-22 17:57:16.867: D/AndroidRuntime(16592): Shutting down VM
01-22 17:57:16.867: W/dalvikvm(16592): threadid=1: thread exiting with uncaught exception (group=0x4110d930)
01-22 17:57:16.875: E/AndroidRuntime(16592): FATAL EXCEPTION: main
01-22 17:57:16.875: E/AndroidRuntime(16592): java.lang.NullPointerException
01-22 17:57:16.875: E/AndroidRuntime(16592):    at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at android.os.Looper.loop(Looper.java:175)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at android.app.ActivityThread.main(ActivityThread.java:5279)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at java.lang.reflect.Method.invokeNative(Native Method)
01-22 17:57:16.875: E/AndroidRuntime(16592):    at java.lang.reflect.Method.invoke(Method.java:511) …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-broadcast localbroadcastmanager

1
推荐指数
1
解决办法
3018
查看次数

如何设置BroadcastReceiver权限(安全性)

所以我有2个应用程序--A和B.

在A我有一个BroadcastReceiver.在receiver标签(清单文件)中,我指定一个android:permission字符串(比方说com.example.app.SEND).现在B不能再向A发送广播了.说得通!

那么为了让B向A发送广播,我该怎么办呢?在B的清单,我指定的uses-permission标签与android:name设置为相同的字符串(com.example.app.SEND)作为接收方android:permission,但仍是广播不会的B到A.

我究竟做错了什么 ?还是还有其他需要做的事情?

- 更新 -

这是我的应用程序A的接收器标签:

    <receiver
        android:name="com.example.app.MyReceiver"
        android:enabled="true"
        android:exported="true"
        android:permission="com.example.BReceiver.SEND" >
        <intent-filter>
            <action android:name="com.example.BReceiver" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

这是uses-permission我B的清单上的标签:

<uses-permission android:name="com.pycitup.BReceiver.SEND" />
Run Code Online (Sandbox Code Playgroud)

security android broadcastreceiver android-permissions android-broadcast

1
推荐指数
1
解决办法
3436
查看次数

Android-广播接收器和服务之间的区别

我想知道,在清单中静态注册广播接收器与启动服务之间会有什么区别?即使应用程序在后台运行,两者都可以运行,在我看来,接收器的编码要简单得多。我在这里想念什么吗?

android broadcastreceiver android-intent android-service android-broadcast

1
推荐指数
1
解决办法
845
查看次数

从后台清除应用程序时,将丢弃AlarmManager

这就是我创建闹钟的方式.当应用程序仍在后台运行时,会触发警报.但是当它从最近的应用程序中清除时,警报就会被丢弃.我正在注册一个新的接收器并提供一个独特的动作来区分两个警报.我的代码中是否有任何错误.

        String filter_action = "myPackageName" + request_code_value +"_time";

        IntentFilter filter = new IntentFilter(filter_action);

        registerReceiver(new AlarmReciever(), filter);

        Intent intent = new Intent(filter_action);
        intent.putExtra(getString(R.string.get_current_intent_value), request_code_value);
        intent.putExtra(getString(R.string.alarmtext), alarm_title);
        intent.putExtra(getString(R.string.alarm_time), newAlarm_Choose_Alarm_Value.getText().toString());

        Calendar calNow = Calendar.getInstance();
        Calendar calSet = (Calendar) calNow.clone();


        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, request_code_value, intent, 0);


        calSet.setTimeInMillis(timeInMillis);

        if (calSet.compareTo(calNow) <= 0) {
            // Today Set time passed, count to tomorrow
            calSet.add(Calendar.DATE, 1);
        }

        alarmManager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

清单文件.

<receiver android:name="com.bigbangpartners.YoWakeUp.activities.AlarmReciever" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="AlarmManager_Start" />
        </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

请帮我.提前致谢.

android broadcastreceiver alarmmanager android-pendingintent android-broadcast

1
推荐指数
1
解决办法
849
查看次数

如何使用BroadcastReceiver处理多个动作?

我试图用a BroadcastReceiver来处理多个动作.接收器注册了一个intent过滤器,但这限制了我只向接收器发送一种动作类型的意图(参见参考资料Intent.getAction();)

这是我的BroadcastReceiver类以及我想要处理其中的操作的方式.

class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
        switch(...){  //the criteria for switching to a particular case
                    ... //some cases to handle here
        }           
    }
}
Run Code Online (Sandbox Code Playgroud)

我注册意图的地方看起来像这样(在服务类中):

@Override
public void onCreate() {
    super.onCreate();
    mbr = new MyBroadcastReceiver();
    this.registerReceiver(mbr, new IntentFilter("MyBroadcastReceiver"));
}
Run Code Online (Sandbox Code Playgroud)

我打电话的方式看起来像这样(实际上我只是设置了一个按钮的监听器):

   //creating the pending intent
   PendingIntent myPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent("MyBroadcastReceiver"), 0);
   //add button listener
   remoteViews.setOnClickPendingIntent(R.id.my_button, myPendingIntent);
Run Code Online (Sandbox Code Playgroud)

这种方式迫使我为每个想要传递给MyBroadcastReceiver的意图设置setAction("MyBroadcastReceiver").

但是我想传递具有不同动作的意图,我该怎么办?

或者这不是一个好的方法,最好是为每个不同的意图BroadcastReceiver使用它自己的单独实现IntentFilter …

android android-intent android-broadcast

1
推荐指数
1
解决办法
2522
查看次数

android.content.res.Resources $ NotFoundException:字符串资源ID#0x64

我制作了一个具有后台服务和广播接收器的应用程序,而我的应用程序包含MainActivity.javamyServiceRunner.java。当我启动后台服务时,它给我这个错误android.content.res.Resources$NotFoundException: String resource id #0x64

我将这些代码放在受保护的void onCreate(Bundle savedInstanceState)中:

     IntentFilter mainFilter=new IntentFilter("liren.action.GOSERVICE3");
      receiver=new MyMainLocalReceiver();
      registerReceiver(receiver, mainFilter);
Run Code Online (Sandbox Code Playgroud)

MyMainLocalReceiver.java

   public class MyMainLocalReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        try
        {
            int serviceData=intent.getIntExtra("serviceData",0);
            //Toast.makeText(getApplicationContext(), serviceData,Toast.LENGTH_SHORT).show();

            tvStepsCount.setText(serviceData);
        }
        catch (Exception e)
        {
            tvStepsCount.setText(e.toString());
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

在myServiceRunner扩展Service类内部,我已在onStartCommand方法中添加了这些代码。

  @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
    Thread triggerService=new Thread(new Runnable() {
        @Override
        public void run() {
            for(;;)
            {
                try
                {
                    Intent myFilteredResponse = new …
Run Code Online (Sandbox Code Playgroud)

service android broadcastreceiver android-service android-broadcast

1
推荐指数
1
解决办法
1691
查看次数