あり、アプリケーションがインストールされている場合、登録されるべき成分(< 3.0)である、またはアプリケーションが例えばContentProvider
ように、開始(3.0 & ICS)に停止状態から移動した少なくともとき。
プロバイダは、明らかに、あなたが心配しなければならないライフサイクルの「終わり」(たくさん)はありません。
<provider android:name=".ReceiverProvider"
android:authorities="some.provider.authority.goes.here"
android:exported="true" />
そして、ReceiverProvider
用:
おそらく、試してみる価値
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;
}
}
は、単にあなたのAndroidManifest.xml
に<provider>
を追加し、置きます。
ここでは、「マニフェストで宣言された受信者には送信されません」というメッセージが表示されます。 – zapl
それは大変**間違っています**。受信者がマニフェストで宣言されていない場合は、の一部です。■onCreate - アプリケーションが停止状態から開始状態に移行したとき(または直ちにsdk_version <= 10の場合)にトリガーされます。 –
Jens
oops、true。しかし、誰かがコンテンツを要求するまで、ContentProviderは起動しません。私はあなたが 'Intent.ACTION_BOOT_COMPLETED'を捕まえ、' context.getContentResolver()。acquireContentProviderClient(Uri.parse( "content://your.authority")) 'を呼び出すことでそれが起こると思います。 – zapl