Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当只使用广播接收机时,是否有一个仅用于标记接收机注册接收机的变通方法?_Android_Android Intent_Broadcastreceiver - Fatal编程技术网

Android 当只使用广播接收机时,是否有一个仅用于标记接收机注册接收机的变通方法?

Android 当只使用广播接收机时,是否有一个仅用于标记接收机注册接收机的变通方法?,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,如果插入了耳机,我想得到提醒。但意图“操作耳机插头”与标志“仅限标志接收器”一起使用。 所以我必须一直运行一项服务或一项活动才能达到目的?我只想运行一个Broadcastreceiver,而不需要任何服务或活动。有解决办法吗?这可能吗?或者我可以启动一次服务,注册然后停止它吗 注:我知道耳机什么时候会因为发出噪音而关闭 谢谢您的回答。 它只提供给那些调用registerReceiver的用户,而不发送给 在舱单中声明的接收人 因此,您必须运行调用registerReceiver的程序。如果它停止

如果插入了耳机,我想得到提醒。但意图“操作耳机插头”与标志“仅限标志接收器”一起使用。 所以我必须一直运行一项服务或一项活动才能达到目的?我只想运行一个Broadcastreceiver,而不需要任何服务或活动。有解决办法吗?这可能吗?或者我可以启动一次服务,注册然后停止它吗

注:我知道耳机什么时候会因为发出噪音而关闭

谢谢您的回答。

它只提供给那些调用registerReceiver的用户,而不发送给 在舱单中声明的接收人

因此,您必须运行调用
registerReceiver
的程序。如果它停止运行,而您没有注销接收器,则会出现错误。

它只提供给那些调用registerReceiver的用户,而不发送给 在舱单中声明的接收人


因此,您必须运行调用
registerReceiver
的程序。如果它停止运行,并且您没有注销接收器,则会出现错误。

安装应用程序时应注册某些组件(安装应用程序时应注册某些组件(此处为“未发送到清单中声明的接收器”)这是非常不正确的。接收方没有在清单中声明,它是:s onCreate的一部分-当应用程序从停止状态变为启动状态时触发(或者,如果sdk_版本出错,则立即为true。但是,如果有人向您请求内容,那么ContentProvider不会启动。我猜您可以捕获
意图。操作\u BOOT\u已完成
,然后调用
context.getContentResolver().acquireContentProviderClient(Uri.parse()content://your.authority"))
这样做。应用程序启动时,ContentProviders会在应用程序主线程上启动。您不需要向其请求任何内容。是的,但我想OP不希望用户每次都必须手动启动应用程序,因为您遇到了“未发送到清单中声明的接收者”的情况这是非常不正确的。接收方没有在清单中声明,它是:s onCreate的一部分-当应用程序从停止状态变为启动状态时触发(或者,如果sdk_版本出错,则立即为true。但是,如果有人向您请求内容,那么ContentProvider不会启动。我猜您可以捕获
意图。操作\u BOOT\u已完成
,然后调用
context.getContentResolver().acquireContentProviderClient(Uri.parse()content://your.authority"))
这样做。应用程序启动时,ContentProviders会在应用程序主线程上启动。您不需要向它请求任何内容。是的,但我想OP不希望用户每次都必须手动启动应用程序
<provider android:name=".ReceiverProvider"
    android:authorities="some.provider.authority.goes.here"
    android:exported="true" />
public class ReceiverProvider extends ContentProvider {
    @Override
    public boolean onCreate() {
        BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                System.out.println("Headset plug: " + intent);
            }
        };
        IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
        getContext().registerReceiver(receiver, filter);
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
            String sortOrder) {
        return null;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return 0;
    }
}