Articles of android intent

Google登录无法使用

我正在关注Google的 Google Sign 文档 。 我打电话时有一个奇怪的问题 Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent (mGoogleApiClient); startActivityForResult (signInIntent, RC_SIGN_IN); 似乎Intent已被解雇,但我看不到帐号选择器对话框 。 我在用 compile “com.google.android.gms:play-services-auth:9.6.1″ 当我检查googleclient对象是否连接时,它返回true。 它在一些设备上工作,但不是在每个设备上(特别是xiaomi) 履行 @OnClick (R.id.google_singin_button) void signInButtonClicked () { HashMap map = new HashMap (); map.put (AllAnalytics.LABEL, AllAnalytics.Label.SIGN_IN_GOOGLE); map.put (AllAnalytics.ACTION, AllAnalytics.Action.CLICK); map.put (AllAnalytics.CATEGORY, AllAnalytics.Category.REGISTRATION_SCREEN); aa.analyticsEventOccur (map); if (null != mGoogleApiClient) { // Log.e(TAG,mGoogleApiClient.isConnected()+””); Intent signInIntent = […]

使用Binder从Native cpp应用程序中捆绑Intent

我试图从本机cpp代码调用一个intent。 基本上,根据我的理解,我必须编写一个包来匹配frameworks / base / core / java / android / app / ActivityManagerNative.java中的确切反序列化序列; 案例BROADCAST_INTENT_TRANSACTION。 到目前为止的进展是我在Java应用程序中收到了意图,但是我对bundle有效负载有一些问题。 我已经调试了Java应用程序,似乎它将int作为int读取而不是读取int,它保存了bundle的键的types。 W/System.err( 1386): java.lang.RuntimeException: Parcel android.os.Parcel@71aa5c5: Unmarshalling unknown type code 6815843 at offset 12 W/System.err( 1386): at android.os.Parcel.readValue(Parcel.java:2228) W/System.err( 1386): at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) W/System.err( 1386): at android.os.BaseBundle.unparcel(BaseBundle.java:221 这是使用的本机代码 #include #include #include #include #include #include namespace android { static const int […]

Android:如何防止从窗口小部件启动多个活动实例?

重现问题的步骤: 用户启动我的应用程序(根活动的名称:“mainActivity”)=> mainActivity的实例A. 他按下主页按钮(mainActivity在后台运行) 他相对于这个应用程序安装小部件 他点击了widget =>显示了一个新的mainActivity实例(实例B) 他点击后退按钮:用户回到活动A(我不想要的!活动B应该关闭(实际上,应该关闭整个应用程序)) 你知道如何避免这个问题吗? (我在stackoverflow上看到了一些类似的问题但不是我想要的严格意义) 谢谢 !!!! 代码: public class MyWidgetProvider extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // Build the intent to call the service// RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); Intent openAppIntent = new Intent(context.getApplicationContext(), MainActivity.class); openAppIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); PendingIntent openAppPendingIntent = PendingIntent.getActivity(context, 0, […]

浏览器意图并返回正确的活动(关闭打开的选项卡)

在Android中的AccountManager中实现自定义帐户types时,我对登录流程有以下问题: 登录应通过OAuth提供商进行。 因此,我创建了一个SignInActivity ,用于启动WebView并启动OAuth流程。 这很好,当收到my-custom-scheme://callback WebView检测到它,接收code查询字符串参数并完成流程。 使用WebView的缺点是,即使用户可能已在浏览器中拥有活动会话,也不会在WebView使用此会话,因此用户必须再次在WebView登录。 为了解决这个问题,我尝试在AndroidManifest.xml切换到使用intent-filter ,如下所示: 我没有在SignInActivity中打开WebView ,而是启动浏览器意图并等待浏览器点击my-custom-scheme://callback 。 Intent browserIntent = new Intent(Intent.ACTION_VIEW, “http://oauth2provider/authorize”); startActivity(browserIntent); finish(); 在我的SignInActivity我有以下代码来处理回调: if (intent != null && intent.getData() != null && getString(“my-custom-scheme”).equals(intent.getData().getScheme())) { String code = getIntent().getData().getQueryParameter(“code”); // complete oauth flow } 这很有效。 但是, 对于这个问题 (最后!): 如果用户未登录,则浏览器意图将显示oauth提供程序的登录页面。 用户登录后,Chrome将重定向到my-custom-scheme://回调, SignInActivity将启动以处理意图。 由于此活动不可见,浏览器将在登录页面上保持打开状态,对用户来说,它看起来似乎什么也没发生。 浏览器永远不会关闭。 如果用户已登录,则oauth提供程序将直接重定向到my-custom-scheme://回调。 在这种情况下,浏览器选项卡会自动关闭,但浏览器本身仍保持打开状态(没有可见的选项卡)。 所以我的问题是:在重定向到my-custom-scheme://回调之后,无论如何使浏览器的行为有所不同? 理想情况下,我希望它在重定向到回调之后简单地关闭,并返回到活动堆栈中的前一个活动(即从一开始就启动SignInActivity的活动)。

Android 5.1.1默认摄像头在捕获图像后返回onActivityResult中的空意图

我有以下代码请求用户从照片应用程序中选择图像或通过相机应用程序捕获图像: // Camera final List cameraIntents = new ArrayList(); final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); final PackageManager packageManager = fragment.getActivity().getPackageManager(); final List listCam = packageManager.queryIntentActivities(captureIntent, 0); for(ResolveInfo res : listCam) { final String packageName = res.activityInfo.packageName; final Intent intent = new Intent(captureIntent); intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); intent.setPackage(packageName); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); cameraIntents.add(intent); } // Filesystem. final Intent galleryIntent […]

关于startActivity的rjava.lang.IllegalArgumentException(intent,bundle animantion)

嗨我正在使用以下代码,但有时应用程序崩溃与错误: startActivity中的java.lang.IllegalArgumentException(slideactivity,bndlanimation); if (android.os.Build.VERSION.SDK_INT >= 16) { Bundle bndlanimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.slide_in, R.anim.slide_out).toBundle(); startActivity(slideactivity, bndlanimation); } else startActivity(slideactivity); finish(); 这是崩溃日志 java.lang.IllegalArgumentException 1在android.os.Parcel.readException(Parcel.java:1553)2在android.os.Parcel.readException(Parcel.java:1499)3在android.app.ActivityManagerProxy.isTopOfTask(ActivityManager Native .java:4465)4在android.app.Activity.isTopOfTask(Activity.java:5361)5的android.app.Activity.startActivityForResult(Activity.java:37 70)6在android.app.Activity.startActivity(Activity .java:4003)7 at com.tapcibo.tapcibo.uifragment.LaunchActivity.a(SourceFile:1 05)

使用Intent.ACTION_GET_CONTENT选择多个文件

我正在尝试用Intent选择多个文件,但似乎我缺少某些东西。 我创建了一个Intent.ACTION_GET_CONTENT Intent,将Intent.EXTRA_ALLOW_MULTIPLE作为额外的 (它似乎完全符合目的)并创建一个选择器(可选),它选择应该能够选择多个文件并返回它们的应用程序。 问题是我只能选择一个文件。 我试过多个文件浏览器。 这是API 18(4.3)。 ACTIVITY_CHOOSE_FILE = 1; //global constant Button btn = (Button) this.findViewById(R.id.btnGetFiles); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent chooseFile; Intent intent; chooseFile = new Intent(Intent.ACTION_GET_CONTENT); chooseFile.setType(“file/*”); chooseFile.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); intent = Intent.createChooser(chooseFile, “Choose a file”); startActivityForResult(intent, ACTIVITY_CHOOSE_FILE); } }); 我还将此添加到Manifest(它在添加之前具有相同的function): 为什么我不能选择多个文件? (为了澄清:问题不在于,不返回多个文件 – 我不能选择多于1个文件)

通知将应用程序带到前面,无需更改活动

我想创建一个通知,单击它时会将我的应用程序放在前面,但不会更改(重新加载或导航)显示的最后一个活动。 我试过了: setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)) 但是在新的Android 4.3中应用程序带到了前面,但它也启动了MainActivity的新实例,而我不希望这样。 我希望我的应用程序将从显示的上一个活动继续。 怎么做?

如何调试用maven构建的android应用程序

我正在尝试从eclipse调试我的设备上的android应用程序。 设备已添加我可以在控制台和日食中看到它。 控制台(Windows): adb devices List of devices attached 0019cca27f2e6e device 和日食: 我可以在设备/模拟器上运行应用程序而不会出现任何问题。 我只是做clean install和android:deploy然后是android:run并且像魅力一样工作。 但我还想不出如何调试它。 但是当我实际在设备上运行应用程序(三星galaxy SII)时,我只能看到执行com.viber.voip和com.viber.voip:keepAliveReceiver这两个进程com.viber.voip:keepAliveReceiver即使我运行它也看不到我的应用程序。 但是在模拟器/模拟器上,我可以看到我的应用正在运行。 我已经通过这个材料: 使用android maven插件调试应用启动 如何使用Maven在命令行中启动应用程序 http://code.google.com/p/maven-android-plugin/wiki/Debug 无法打破代码。 甚至尝试使用maven-exec-plugin通过调用下面的脚本来开始调试,这里是pom中的插件: exec-maven-plugin org.codehaus.mojo ${basedir}/scripts/debug_app.cmd debug_app.cmd的内容: adb shell am start -D android.intent.action.MAIN -n my.package.name/.HelloAndroidActivity 当我执行这个插件时,我得到以下错误: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=android.intent.action.MAIN } Error: Activity not started, unable to resolve Intent { […]

Android深层链接 – 后台堆栈

我正在尝试在我的Android应用程序中实现深层链接。 我一直在关注这个指南 。 我在Android清单中启动了Android活动并进行了intent-filter: 我从adb产生这个意图: adb shell am start -W -a android.intent.action.VIEW -d “com.example://test” com.example 正在使用正确的意图数据创建活动,并按预期运行。 但是,按下后退按钮后,应用程序退出。 我期待使用MainActivity构建后台堆栈,如Android清单中的parentActivityName所指定。 显然事实并非如此。 在这种情况下,如何将父活动添加到后台堆栈? 我想知道我是否可以在通知的上下文中使用TaskStackBuilder所示的TaskStackBuilder ,但不确定它是如何工作的。 也许我应该有一个中间Activity来构建主要活动,例如: TaskStackBuilder.create(this) .addParentStack(MyActivity.class) .addNextIntent(new Intent(this, MyActivity.class)) .startActivities(); ?