タグ付けされた質問 「android-intent」

アクティビティ、サービスを開始するため、またはBroadcastReceiverを介してシステムまたはアプリケーションのイベント/通知に応答するためのインテント、インテントエクストラ、保留インテントの実用的で高度な使用に関する質問。(基本的な知識については、情報を参照してください)

8
インテント-アクティビティが実行されている場合は、それを前面に表示します。それ以外の場合は、(通知から)新しいアクティビティを開始します
私のアプリには通知があります-明らかに-フラグなしで毎回新しいアクティビティを開始するので、複数の同じアクティビティが互いに重なり合って実行されますが、これは間違っています。 私がしたいことは、通知が保留中のインテントで指定されたアクティビティを、すでに実行されている場合は最前面に移動し、そうでない場合はそれを開始することです。 これまでのところ、私が持っているその通知の意図/保留中の意図は private static PendingIntent prepareIntent(Context context) { Intent intent = new Intent(context, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } 奇妙なことに、うまくいくこともあれば、うまくいかないこともあります...フラグのすべての組み合わせをすでに試したような気がします。

3
PendingIntentはIntentエキストラを送信しません
私MainActicity はRefreshServiceと呼ばれるエキストラIntentがあるで始まります。booleanisNextWeek 私RefreshServiceは、ユーザーがクリックしたときにNotification開始MainActivityするを作成します。 これは次のようになります。 Log.d("Refresh", "RefreshService got: isNextWeek: " + String.valueOf(isNextWeek)); Intent notificationIntent = new Intent(this, MainActivity.class); notificationIntent.putExtra(MainActivity.IS_NEXT_WEEK, isNextWeek); Log.d("Refresh", "RefreshService put in Intent: isNextWeek: " + String.valueOf(notificationIntent.getBooleanExtra(MainActivity.IS_NEXT_WEEK,false))); pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); builder = new NotificationCompat.Builder(this).setContentTitle("Title").setContentText("ContentText").setSmallIcon(R.drawable.ic_notification).setContentIntent(pendingIntent); notification = builder.build(); // Hide the notification after its selected notification.flags |= …

4
違いとgetApplication()、getApplicationContext()、getBaseContext()およびsomeClass.thisをいつ使用するか
私はアンドロイドに新たなんだと私は違いを理解しようとしているgetApplication()、getApplicationContext(、) getBaseContext()、getContext()そしてsomeClass.this、特に場合は、次のコード行でこれらのメソッドを使用するには: トーストを出すとき、これらの違いは何ですか?どのような場合に使用しますか? Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show(); インテントと同じ: Intent intent = new Intent(getApplicationContext(), LoginActivity.class); Intent intent = new Intent(MenuPagina., LoginActivity.class); Intent intent = new Intent(getBaseContext(), LoginActivity.class); Intent intent = new Intent(getApplication(), LoginActivity.class);

2
複数のフィルターを備えたBroadcastReceiverまたは複数のBroadcastReceivers?
2つの異なるブロードキャストをキャッチする必要があるAndroidアクティビティがあります。私の現在のアプローチはBroadcastReceiver、アクティビティ内に1つを持ち、それで両方のブロードキャストをキャッチすることです。 public class MyActivity extends Activity { private MyActivity.BroadcastListener mBroadcastListener; private boolean mIsActivityPaused = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylayout); // Create the broadcast listener and register the filters mIsActivityPaused = false; mBroadcastListener = new BroadcastListener(); IntentFilter filter = new IntentFilter(); filter.addAction(Params.INTENT_REFRESH); filter.addAction(Params.INTENT_UPDATE); registerReceiver(mBroadcastListener, filter); } @Override …

6
特定のアクティビティからインテントを処理できるかどうかを確認するにはどうすればよいですか?
今のところこの方法がありますが、何かが足りないように思いました たとえば、falseを返すファイル/sdcard/sound.3gaがあります(このタイプのファイルを処理できるアクティビティがないなど)が、ファイルマネージャから開くと、メディアプレーヤーで問題なく開きます。 このインテントは完全ではないので、このインテントを処理できるアクティビティがない場合にのみ、handlerExists変数がfalseになることを確認するために、さらに何かをする必要があります。 PackageManager pm = getPackageManager(); Intent intent = new Intent(android.content.Intent.ACTION_VIEW); String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriString)).toString()); String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); intent.setDataAndType(Uri.fromFile(new File(uriString)),mimetype); boolean handlerExists = intent.resolveActivity(pm) != null;


11
画面のアンドロイドでダイアログの位置を変更する
私はAlertDialog自分の活動でシンプルにしました: View view = layoutInflater.inflate(R.layout.my_dialog, null); AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this) .setView(view) .create(); infoDialog.show(); 上記のコードでは、ダイアログは画面の(ほぼ)中央に表示されます。 ダイアログの位置をカスタマイズして、上部のアクションバーのすぐ下に表示するにはどうすればよいですか。(とにかく重力やダイアログの何かを変更する方法はありますか?)そして私のコードに基づいてそれを行う方法は?

20
決済意図
Androidアプリが、情報を渡すインテント(ステータスバーのペンディングインテント)によって呼び出されています。 ホームボタンを押してホームボタンを押してアプリを再度開くと、インテントが再度呼び出され、同じ追加機能がまだ残っています。 @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } これは想定されたように実行されないコードです String imgUrl; Bundle extras = this.getIntent().getExtras(); if(extras != null){ imgUrl = extras.getString("imgUrl"); if( !imgUrl.equals(textView01.getText().toString()) ){ imageView.setImageDrawable( getImageFromUrl( imgUrl ) ); layout1.setVisibility(0); textView01.setText(imgUrl);//textview to hold the url } } そして私の意図: public void …

5
PendingIntentで使用される「requestCode」は何ですか?
バックグラウンド: AlarmManager経由のアラームにPendingIntentを使用しています。 問題: 最初は、以前のものをキャンセルするために、アラームを開始する前に使用した正確なrequestCodeを提供する必要があると思いました。 しかし、キャンセルAPIが言うように、私は間違っていることがわかりました。 インテントが一致するアラームを削除します。(filterEquals(Intent)で定義されているように)Intentがこのアラームと一致する任意のタイプのアラームはキャンセルされます。 「filterEquals」を見て、ドキュメントは言う: インテント解決(フィルタリング)の目的で、2つのインテントが同じかどうかを判断します。つまり、アクション、データ、タイプ、クラス、およびカテゴリーが同じである場合です。これは、インテントに含まれる追加データを比較しません。 「requestCode」が何のためにあるのかわかりません... 質問: 「requestCode」は何に使用されますか? 同じ「requestCode」で複数のアラームを作成するとどうなりますか?それらは互いに上書きしますか?

7
geo URIインテントによって起動されたマップにマーカーを表示するにはどうすればよいですか?
特定の地理座標でGoogleマップを起動して、さまざまな場所(一度に1つ、ユーザー入力により選択)を表示するアプリケーションがあります。 私は現在これを使用しています(もちろん、実際の緯度と経度の値で): Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17")); startActivity(intent); これは、指定したポイントのインジケーターやマーカーが表示されないことを除いて、まったく同じです。それはその場所にのみ集中します。 MapViewを使用せずにマーカーなどを含める方法はありますか?

3
ブラウザーからのリンクをインターセプトしてAndroidアプリを開く
ブラウザーで開くのではなく、ユーザーが特定のパターンのURLをクリックしたときにリンクを開くようアプリに促すことができるようにしたいと思います。これは、ユーザーがブラウザーまたは電子メールクライアントのWebページ上にある場合、または新しく作成されたアプリのWebView内にある場合です。 たとえば、電話のどこからでもYouTubeリンクをクリックすると、YouTubeアプリを開くことができます。 自分のアプリでこれをどのように達成しますか?

13
Androidはビュー間に水平線を描画します
以下のような私のレイアウトがあります: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" style="@style/behindMenuItemLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Twitter Feeds" android:textStyle="bold" /> <ListView android:id="@+id/list" android:layout_width="350dp" android:layout_height="50dp" /> <TextView android:id="@+id/textView1" style="@style/behindMenuItemLabel1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="1dp" android:text="FaceBook Feeds" /> <ListView android:id="@+id/list1" android:layout_width="350dp" android:layout_height="50dp" /> </LinearLayout> 私の要件は、との間に水平線を引くことですTextViewListView 誰か助けてもらえますか?


9
アプリケーションがインストールされているかどうかを確認する-Android
Google Playからアプリをインストールしようとしています。Google PlayストアのURLを開くと、Google Playが開き、戻るボタンを押すとアクティビティが再開されることを理解できます。 Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(appURL)); marketIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); startActivity(marketIntent); アクティビティに戻ったときに、これonResume()を呼び出してアプリがインストールされているかどうかを確認しようとしましたが、エラーが発生しました。 @Override protected void onResume() { super.onResume(); boolean installed = false; while (!installed) { installed = appInstalledOrNot(APPPACKAGE); if (installed) { Toast.makeText(this, "App installed", Toast.LENGTH_SHORT).show(); } } } private boolean appInstalledOrNot(String uri) { PackageManager pm = getPackageManager(); …


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.