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