在共享操作上打开不可见活动(ACTION_SEND)

时间:2014-12-04 13:04:02

标签: android android-intent android-activity android-sharing

StackOverfow上有很多类似的问题,但它们无法解决我的问题。

任务是使用来自不同应用程序的默认共享机制(ACTION_SEND)发送的服务意图进行处理 但就ACTION_SEND是一项活动行动而言,我们必须在活动中获取意图并将其广播给服务。如果用户看不到此活动,那将是完美的。

我已经研究了很多,并且已经尝试了很多解决方案。

  1. 使活动不可见的第一步属于活动风格。

    我尝试过这个值。

    android:theme =“@ android:style / Theme.Translucent.NoTitleBar”

    机器人:主题= “@机器人:风格/ Theme.Translucent”

    机器人:主题= “@机器人:风格/ Theme.Translucent.NoTitleBar.Fullscreen”

    此外,我还尝试创建自定义主题。

    <style name="Theme.Transparent" parent="android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>
    

    AndroidManifest.xml中的活动如何。

    <activity
        android:name="xxx.xxx.activities.HandleShareIntentActivity"
        android:theme="@style/Theme.Transparent"
        android:noHistory="true"
        android:excludeFromRecents="true"
        android:label="@string/title_activity_handle_share_intent">
       <intent-filter>
           <action android:name="com.google.android.gm.action.AUTO_SEND"/>
           <action android:name="android.intent.action.SEND"/>
           <action android:name="android.intent.action.SEND_MULTIPLE"/>
           <category android:name="android.intent.category.DEFAULT"/>
           <category android:name="com.google.android.voicesearch.SELF_NOTE"/>
           <data android:mimeType="*/*"/>
       </intent-filter>
    </activity>
    
  2. 活动代码。没有setContentView()finish()中的onCreate()

    public class HandleShareIntentActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            startService(new Intent(this, xxxService.class).putExtra(
            Constants.ACTION_SHARE_KEY, getIntent()));
    
            finish();
        }  
     }
    
  3. 在Nexus 5上,android 4.4.4我在处理任何共享事件时都会出现黑屏闪烁 任何解决方案?

2 个答案:

答案 0 :(得分:3)

  

我已尝试过这个值。

使用Theme.NoDisplay

答案 1 :(得分:0)

我刚刚这样做了,在我的案例中它有所帮助:

<activity
    android:name=".SensorBoardActivity"
    android:theme="@android:style/Theme.NoDisplay"
    android:excludeFromRecents="true"
    android:noHistory="true">

我发现您已经拥有finish();但是只有其他人才能在离开onCreate()之前执行它。