согласно документации Android, мы определенно можем получать данные из других приложений в действии, как показано в ссылке.
https://developer.android.com/training/sharing/receive.html
Итак, я попробовал это, и это работает отлично, но у меня есть особые моменты, когда я не хочу, чтобы активность выходила на передний план. Я хочу, чтобы намерение было получено службой вместо действия.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<service android:name=".BackgroundPresentation"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</service>
<activity android:name=".MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
</application>
But somehow I cannot receive intent in service, as it seems android:launchMode=singleTask is valid only for activities.
OnNewIntent отлично работает для активности, как показано ниже.
protected void onNewIntent(Intent intent) {
Log.e(TAG, "------->NewIntent is also called");
super.onNewIntent(intent);
setIntent(intent);//must store the new intent unless getIntent() will return the old one
// Get intent, action and MIME type
String action = intent.getAction();
String type = intent.getType();
Log.d(TAG, "onCreate: intent is " + intent.getStringExtra(Intent.EXTRA_TEXT));
}
Может ли кто-нибудь предложить способ, которым я могу получать намерения/данные от других приложений в службе. ?
startService()
вonCreate
, затемfinish();
- person Mark Keen   schedule 15.07.2016START_STICKY
в своей службе? - person Mark Keen   schedule 15.07.2016