Articles of android intent

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY未设置历史记录中的意图

在我的活动中: 我使用onNewIntent来处理新的意图。 我不需要处理历史中的意图,并且在开始时我已经放了这段代码 if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) { return; } 但是,此标志未设置为Kindle Fire上的历史意图。 在其他Android设备上,此代码运行良好。 也许有其他方法可以避免处理历史意图?

来自应用程序启动器的Android onNewIntent给了我最后的意图

我有一个SingleTask应用程序,并能够听取’测试’方案。 如果我单击按钮(参见代码),我重新启动自己并调用onNewIntent给我’测试’意图(现在我可能通过推送片段对此作出反应) 现在,如果我按下主页,然后打开应用程序启动器并重新输入我的应用程序,我希望调用onNewIntent但是有一个空的意图,因为我不想重做我的动作(例如推送片段)。 但onNewIntent给了我用于启动我的活动的最后一个意图,即“测试”意图。 我该怎么做以防止推送相同的片段? 有没有使用我自己的ID的好方法。 public class OnNewIntentTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.e(“”, “on create”); ((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.e(“”, “Relaunch activity”); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(“testing://hello”))); } }); } @Override protected void onNewIntent(Intent […]

Samsung My Files explorer:从指定文件夹中选择文件

我正在使用以下代码打开三星的My Files应用程序来选择文件… public void openFileBrowser( ) { Intent intent = new Intent( “com.sec.android.app.myfiles.PICK_DATA” ); try { startActivityForResult( intent, PICKFILE_RESULT_CODE ); } catch ( ActivityNotFoundException e ) { e.printStackTrace( ); Log.log( Log.ERROR, TAG + “MyFiles is not installed !!” ); } } 这将打开“我的文件”应用程序,并允许用户通过它选择文件。 但是,我希望在设备的外部存储器上打开一个特定的文件夹…并让用户从那里选择一个文件….我尝试通过做… public void openFileBrowser( ) { Intent intent = new Intent( “com.sec.android.app.myfiles.PICK_DATA” ); […]

多次接收相同的意图广播,但只发送一次

我的意图是在某种条件下发送的。 日志certificate它只发送ONCE,但接收器正在接收它多次毫秒。 10-01 10:09:59.201: I/System.out(13543): SENDER CHECKPOINT 10-01 10:09:59.211: I/System.out(13543): RECEIVER CHECKPOINT 10-01 10:09:59.291: I/System.out(13543): RECEIVER CHECKPOINT 我已确认广播接收器只有一个注册,并且只有一个动作filter与注册的BR一起使用。 它仅用于在另一个线程中运行的服务广播意图的单个活动中。 同样,日志证实了ONE广播和多个收据。 更重要的是,额外信息在回显收据中为空。 怎么会这样? 操作系统是否有可能回应它? 发送广播的代码: private void sendBroadcast(boolean status, String message, String action){ System.out.println(“SENDER CHECKPOINT”); Intent intent = new Intent(action); Bundle bundle = new Bundle(); bundle.putBoolean(“status”, status); bundle.putString(“message”, message); intent.putExtras(bundle); sendBroadcast(intent); } 接收广播的代码: private class displayUpdate […]

如何让服务在后台运行

我创建的应用程序会在用户按下电源按钮3次后立即启动活动。 经过一些研究后我发现要做到这一点,首先你需要创建一个服务,启动广播接收器来检查屏幕的开/关状态。 基本上我希望即使应用程序关闭也能运行。 一旦按下电源按钮3次或更多次,它应该开始另一个活动。 如果您知道解决方案,请给我完整的代码或答案的链接。 我以某种方式设法编写此代码,但它无法正常工作: UpdateService.java 这是我使用的服务类: import android.app.Service; import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.util.Log; import android.widget.Toast; public class UpdateService extends Service { BroadcastReceiver mReceiver; @Override public void onCreate() { super.onCreate(); // register receiver that handles screen on and screen off logic IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); mReceiver = […]

通过intent将对象作为Parcel(带有文件描述符)发送会导致exception

我正在尝试将一组StatusBarNotifications发送给我的另一个服务,所以我这样做了: 扩展NotificationListenerService服务: @Override public void onNotificationPosted(StatusBarNotification sbn) { // TODO Auto-generated method stub StatusBarNotification[] activeN = super.getActiveNotifications(); Intent i = new Intent(this, CoreTwo.class); i.putExtra(“activenotifications”, activeN); startService(i); } 但是我得到了一个关于文件描述符的RuntimeException。 我只find了一些解决这个问题的链接,例如这个问题。 答案提到了以下内容: 使用Bundle.putBinder()传递一个Binder,它将使用ParcelFileDescriptor(来自API 18)返回一个Parcel。 但我不明白如何实现这一点。 此链接中的另一个人在这里提到以下内容: 如果我从ContentProvider返回PaecelFileDescriptor,它可以正常工作。 但我不明白他的意思。 这是最后一个链接。 它解决了与我相同的问题,但似乎没有解决方案。 有谁理解我链接的这些潜在解决方案? 是否有针对此问题的解决方法,可能是另一种发送数据的方式(StatusBarNotification [](它扩展了Parcelable))? 这是日志: 08-23 16:49:36.839: W/NotificationListenerService[NoLiSe](12804): Error running onNotificationPosted 08-23 16:49:36.839: W/NotificationListenerService[NoLiSe](12804): java.lang.RuntimeException: Not allowed to […]

如何在android中的instagram上添加带图像共享的标题?

这是我的代码。 我想添加图片标题。 请帮帮我。 private void shareInstagram(Uri uri){ Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType(“image/*”); // set mime type shareIntent.putExtra(Intent.EXTRA_STREAM,uri); // set uri shareIntent.putExtra(Intent.EXTRA_TITLE, “Sample title”); shareIntent.setPackage(“com.instagram.android”); startActivity(shareIntent); }

如何在Android中findIntent源?

可能重复: Android:如何获取Intent的发件人? 在android中有没有办法find触发INTENT的源活动(在目标活动中)? 场景是我有两个活动A和B.两者都激活了调用活动的意图C.活动C根据其来源显示额外信息。 例如。 如果呼叫来自A,则C仅显示2个文本视图,而在B触发的意图的情况下,活动C显示3个文本视图(基本上更多信息基于谁是呼叫者)。 为了确定这一点,我需要知道是谁解雇了调用C的意图 。 我该怎么做呢?

具有自己日历的Android同步日历function

我已经展示了如何为我们自己的帐户设置自己的sync_calendarfunction的技术,以及我们如何将自己的事件同步到…. 将清单中的权限授予READ和WRITE日历 在res / xml文件夹文件名下创建SyncAdapter:sync_calendar.xml android:accountType: – 这里提供您在帐户身份validation器下创建的帐户types,如下所述 在清单文件中定义服务名称和元数据 创建同步启动时将调用的服务,并添加要移交同步日历的逻辑 public class CalendarSyncAdapterService extends Service { private static SyncAdapterImpl sSyncAdapter = null; static MeetingsDatabaseAdapter sync_Meetings = null; public CalendarSyncAdapterService() { super(); } private static class SyncAdapterImpl extends AbstractThreadedSyncAdapter { public SyncAdapterImpl(Context context) { super(context, true); mContext = context; } @Override public void onPerformSync(Account account, Bundle […]

FLAG_ACTIVITY_REORDER_TO_TOP导致RuntimeException或黑屏旋转

我有两个活动,我想在它们之间切换而不重新创建或复制它们。 每个活动都有一个按钮,该按钮将使用FLAG_ACTIVITY_REORDER_TO_TOP的意图将用户发送给另一个。 除以下条件外,此方法效果很好: 关闭力量后启动应用程序新鲜 点击按钮进入活动2 点击按钮返回活动1 旋转屏幕。 此时,应用程序崩溃,“执行停止未恢复的活动”。 棒棒糖只是显示黑屏。 奇怪的是,如果你在第4步之前进入主屏幕并恢复应用程序,然后旋转上述条件没有任何问题,应用程序正常工作,直到它关闭/重新启动。 这种情况似乎特定于FLAG_ACTIVITY_REORDER_TO_TOP,并且发生在Android 5.0和4.4上,并且只是重新开始。 我对清单中的活动没有任何属性。 布局只有一个按钮,调用如下所示的方法: MainActivity: public void goSecond(View v) { Intent i = new Intent(this, SecondActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); } SecondActivity: public void goFirst(View v) { Intent i = new Intent(this, MainActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(i); } 我没有覆盖任何其他生命周期方法或做任何其他事情。 有任何想法吗?