我试图在我的应用程序中创建一个功能,让用户在他的可穿戴设备上说话。这有效,并且在接收活动中的数据时有效。只是现在我想在服务中接收数据,但这似乎不起作用。该服务根本没有启动。
为可穿戴设备发出通知的代码:
String replyLabel = "Adres";
RemoteInput remoteInput = new RemoteInput.Builder("ADDRESS")
.setLabel(replyLabel)
.build();
RemoteInput remoteInput2 = new RemoteInput.Builder("PLACE")
.setLabel("Plaats van levering")
.build();
Intent replyIntent = new Intent(this, LogisticWearableListener.class);
PendingIntent replyPendingIntent =
PendingIntent.getService(this, 0, replyIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Action action =
new NotificationCompat.Action.Builder(R.drawable.lzicon,
getString(R.string.wearable_input_start), replyPendingIntent)
.addRemoteInput(remoteInput)
.addRemoteInput(remoteInput2)
.build();
Notification notification =
new NotificationCompat.Builder(logisticLoginInfoScreen)
.setSmallIcon(R.drawable.lzicon)
.setContentIntent(replyPendingIntent)
.setContentTitle("Order invoeren")
.extend(new NotificationCompat.WearableExtender().addAction(action))
.build();
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(logisticLoginInfoScreen);
notificationManager.notify(55, notification);
这是服务代码:
public class LogisticWearableListener extends IntentService {
private String datum;
private String adres;
private LogisticAndroidApp app;
public LogisticWearableListener() {
super("LogisticWearableListener");
Log.d("called wearableserv", "called");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.d("LogisticWearableService", "Service Received.");
app = (LogisticAndroidApp)getApplication();
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
CharSequence seq = remoteInput.getCharSequence("PLACE");
datum = seq.toString();
adres = remoteInput.getCharSequence("ADDRESS").toString();
WearableOrder o = new WearableOrder();
o.setAdres(adres);
o.setPlace(datum);
app.getDataManager().saveWearableOrder(o);
//orders.add(o);
// initializeListView();
}
}
}
和android清单声明:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.afc.mobile365.Test4Sure"
android:versionCode="222"
android:versionName="3.8.71">
<uses-sdk
android:maxSdkVersion="23"
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"></supports-screens>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:name=".LogisticAndroidApp"
android:icon="@drawable/lzicon"
android:label="@string/app_name"
android:largeHeap="true"
tools:replace="android:icon">
<activity
android:name=".SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.Transparent"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".LogisticActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".LogisticLoginInfoScreen"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".StartWorkDayActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".PlanningOrdersActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".StopWorkDayActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".StartWorkDayInfoActivity"
android:noHistory="false"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".DeliveryListActivity"
android:noHistory="false"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".DeliveryDetailActivity"
android:screenOrientation="unspecified"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".LogisticInfoActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".WisselActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".CustomerSigningActivity"
android:noHistory="false"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".LogisticScanTagsActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden">
<!-- android:noHistory="true" -->
</activity>
<activity
android:name=".PauzeActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".StopPauzeActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<activity
android:name=".CameraActivity"
android:noHistory="true"
android:screenOrientation="landscape"
android:theme="@style/Theme.Logistic"
android:windowSoftInputMode="stateHidden"></activity>
<service android:name="com.teamviewer.sdk.screensharing.api.TVSessionService" />
<service
android:name=".LogisticDBManagerService"
android:icon="@drawable/appicon"
android:label="@string/service_name"
android:process=":logistic_background" />
<service
android:name=".LogisticDBGpsLocatieService"
android:icon="@drawable/appicon"
android:label="locationService" />
<receiver
android:name=".LogisticServiceStartupReceiver"
android:process=":logistic_background">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name=".AlarmReceiver"
android:process=":logistic_background" />
<receiver
android:name=".ATimeReceiver"
android:process=":logistic_background2" />
<receiver android:name=".FotoUploadAlarmReceiver" />
<receiver android:name=".LocationChangedReceiver">
<intent-filter>
<action android:name="logistic.android.app.gps"></action>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name=".NavigationActivity"
android:label="@string/title_activity_navigation"></activity>
<activity
android:name=".CacheFotosActivity"
android:label="@string/title_activity_cache_fotos"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".OrderRegelActivity"
android:label="@string/title_activity_bon"
android:noHistory="true"
android:screenOrientation="landscape"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".OrderRegelOverviewActivity"
android:label="@string/title_activity_order_regel_overview"
android:noHistory="true"
android:screenOrientation="landscape"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".OrderRegelCheckboxActivity"
android:label="@string/title_activity_order_regel_checkbox"></activity>
<activity
android:name=".EmballageActivity"
android:label="@string/title_activity_emballage"
android:noHistory="true"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".DialogActivity"
android:label="@string/title_activity_dialog"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".ScanTestActivity"
android:label="@string/title_activity_scan_test"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".LogisticScanEmbaActivity"
android:label="@string/title_activity_logistic_scan_emba"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".TankRegistratieActivity"
android:label="@string/title_activity_tank_registratie"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".LaadLijstEmballageActivity"
android:label="@string/title_activity_laad_lijst_emballage"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
<activity
android:name=".TestScanActivity"
android:label="@string/title_activity_test_scan"></activity>
<!-- Register Service -->
<activity
android:name=".LaadLijstOntvangEmballageActivity"
android:label="@string/title_activity_laad_lijst_ontvang_emballage"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
<!--
ATTENTION: This was auto-generated to add Google Play services to your project for
App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information.
-->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity android:name=".Wearable.WearableActivity" android:label="Plaats Order"
android:screenOrientation="portrait"
android:theme="@style/Theme.Logistic"></activity>
</application>
<service android:name=".LogisticWearableListener" android:exported="true">
</service>
答案 0 :(得分:1)
您的Service
需要&#34;导出&#34;以便其他组件(在这种情况下,NotificationManager
)可以启动它。
将android:exported="true"
添加到Service
。